На главную

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").

Примечания.

  1. При смене режима сжатия для бэкапа формирование стека файлов начинается с начала. Это сделано для того, чтобы не было путаницы в случаях, когда основной бэкап делался с компрессией, а xdelta-файлы — без неё (и наоборот).

  2. При создании xdelta-бэкапа сверяются контрольные суммы файла полного бэкапа в удаленном хранилище и локальном, если они различаются — программа прекращает работу.

  3. Комментарии в коде и отладочные сообщения часто дублируют друг друга, если вас это раздражает — используйте grep для удаления лишних для вас строк.

  4. При необходимости перезаписать какой-либо файл (нештатная ситуация) программа делает его копию с уникальным именем и сообщает об этом на STDERR (можно поискать эти случаи в коде по имени функции warn()). Таким же образом сообщается о различных ситуациях, которые выглядят подозрительными.

  5. Комментарии в программе написаны в UTF-8, если у вас в системе другая кодировка, воспользуйтесь iconv.

  6. К сожалению, vzdump и tar оказались утилитами с неотключаемой говорливостью, по причине чего появляются проблемы при работе через cron, для решения этой проблемы установите переменную $quiet равной 1.

  7. Если вы нашли ошибки в программе, пишите на articles <> lithium.opennet.ru.

Cкачать


Рейтинг@Mail.ru