На главную
vzdump_wrapper
Эта программа изначально писалась "для себя", решении о
выкладывании в сеть было принято исходя из соображений, что, возможно, кому-то не придется
делать эту работу еще раз. Программа находится в альфа-стадии (работает у автора), так что
если вы решили её использовать, возможно вам понадобятся элементарные знания perl
чтобы решить возможные проблемы (или хотя бы грамотно о них написать).
Изменения.
- 23.11.07. Исправлена проблема с установленной по умолчанию переменной окружения TMPDIR, указывающей на несуществующий каталог.
Один из дочерних процессов (скорее всего xdelta) завершался без сообщений об ошибках, в связи с чем инкрементальные архивы не создавались.
О программе.
Программа vzdump_wrapper (если придумаете лучшее название — пишите) была создана с
использованием идей из программы fsbackup
Maxim'а Chirkov'а и предназначена для резервного копирования
бэкапов, создаваемых vzdump, на удаленный сервер средствами ssh с ведением набора резервных копий.
Первая копия создается как полная, остальные — как xdelta-копии (режим vzdump "--xdelta").
При достижении определенного числа файлов бэкапов производится ротация архива —
старый набор файлов удаляется и начинается новый. Опционально возможно перемещение старого набора бэкап-файлов
в каталог OLD (при этом его старое содержимое удаляется). Для каждого VPS создается отдельный каталог. При подключении к удаленному
сервер по ssh используется предварительно сгенерированная пара ключей (см. руководство по ssh).
Рекомендуется создать отдельную учетную запись для сервера, а не использовать учетную запись реально
существующего пользователя (тем более root).
Параметры.
vzdump_wrapper [--all | VID] | [--help | -h ] [--compress] [--stop | --suspend | --snapshot]
--all: архивировать все VPS.
VID: номер конкретной VPS.
--help или -h: Справка.
--compress, --stop, --suspend, --snapshot: соответствующие режимы vzdump.
Внутренние переменные.
(Эти переменные можно изменить внутри кода скрипта.).
- $remote_host — FQDN удаленного сервера;
- $remote_user — имя пользователя на удаленном сервере;
- $max_delta_files — предел количества xdelta-файлов после которого делать ротацию архива;
- $save_old_backup — сохранить во время ротации старый набор файлов в каталоге OLD ( "0" | "1");
- $prog_ssh, $prog_scp, $prog_vzlist — имена (и пути) к программам ssh, scp и vzlist соответственно;
- $local_dumpdir — локальный каталог, в который делает дампы vzdump;
- $remote_dumpdir — каталог на удаленном сервере, куда переносятся бэкапы;
- $compress — сжимать ли бэкапы, задает для vzdump флаг --compress ( "0" | "1");
- $pause — вариант остановки VPS программой vzdump (см. документацию vzdump), принимает значения:
- "1" — "--stop"
- "2" — "--suspend"
- "3" — "--snapshot"
- $DEBUG — включение отладки ( "0" | "1");
- $quiet — подавление паразитного вывода vzdump и tar ( "0" | "1").
Примечания.
При смене режима сжатия для бэкапа формирование стека файлов начинается с начала. Это сделано для того,
чтобы не было путаницы в случаях, когда основной бэкап делался с компрессией, а xdelta-файлы — без неё (и наоборот).
При создании xdelta-бэкапа сверяются контрольные суммы файла полного бэкапа в удаленном
хранилище и локальном, если они различаются — программа прекращает работу.
Комментарии в коде и отладочные сообщения часто дублируют друг друга, если вас это раздражает —
используйте grep для удаления лишних для вас строк.
При необходимости перезаписать какой-либо файл (нештатная ситуация) программа делает его копию с
уникальным именем и сообщает об этом на STDERR (можно поискать эти случаи в коде по имени функции warn()). Таким же образом сообщается
о различных ситуациях, которые выглядят подозрительными.
Комментарии в программе написаны в UTF-8, если у вас в системе другая кодировка, воспользуйтесь iconv.
К сожалению, vzdump и tar оказались утилитами с неотключаемой говорливостью, по причине чего появляются проблемы при работе
через cron, для решения этой проблемы установите переменную $quiet равной 1.
Если вы нашли ошибки в программе, пишите на articles <> lithium.opennet.ru.
|