ISPbackup

Материал из ISPWiki

Перейти к: навигация, поиск

ISPbackup - это программа для резервного копирования файлов. Изначально она проектировалась для запуска на отдельном сервере резервных копий. Большую часть работы должен выполнять именно этот сервер, чтобы не создавать дополнительной нагрузки на рабочие сервера.

Содержание

Общие сведения

Условно функциональность ISPbackup, можно разделить на три части:

  1. Клиентская часть. Отвечает за получение списка файлов и, если это необходимо, данных, которые в них содержатся.
  2. Серверная часть. На основе данных получаемых от клиентской части программы создает резервные копии файлов.
  3. Третья часть отвечает за извлечение файлов из резервных копий.

Взаимодействие клиента и сервера построено так, чтобы можно было реализовать через один поток (pipe).

Клиент отправляет в поток список файлов. Если он встречает файл ненулевой длинны, то ждет на входе ответ. Если ответом будет строка "data\n", следом за информацией о файле будет записано его содержимое в формате:

[<N = размер блока (4 байта)> <N байтов данных>] ...

Последний блок должен иметь нулевой размер. Если размер данных будет отличаться от заявленного размера файла, размер файла будет скорректирован.

Сервер при получении в списке файла с ненулевой длинной ищет в предыдущей резервной копии файл с таким же размером и датой модификации. Если файл найден, в результирующий листинг может быть вставлена ссылка на этот файл в предыдущей резервной копии, или же файл будет взят из этой копии и перепакован заново. Сервер пакует данные с помощью gzip и сохраняет их в файлы-хранилища. Список файлов и их атрибуты сохраняются отдельно. Смещение файла в файле-хранилище не может превышать MAXOFFSET байт. Если данных больше - создается новый файл. Файлы с размерами большими MINSIZE пакуются отдельно. Если последняя резервная копия использует файл хранилища целиком, то во вновь созданной резервной копии создается жесткая ссылка (hardlink) на этот файл. Если файл используется частично, то в результирующий листинг может быть помещена ссылка на этот файл в предыдущей резервной копии (если её использование разрешено) или перепакован в новую резервную копию из старой.

Общие параметры

-g <файл>      Путь до файла конфигурации. В этот файл могут быть помещены параметры: exclude, archives,
               minsize, maxoffset and timeout. Файл не должен содержать пустых строк, лишних пробелов и комментариев.
               (По умолчанию /usr/local/ispmgr/etc/ispbackup.conf) 
               Параметр exclude - это регулярное выражение
               Параметр max_dirsize позволяет исключать директории большого размера (с большим количеством файлов)
               Пример:
               exclude=^\./tmp[abc]$
               archives=.tar.gz
               archives=.rar
               minsize=1048576
               maxoffset=100000000
               max_dirsize=2000000
               timeout=60
-C <каталог>   Изменяет рабочий каталог программы. Каталог изменяется сразу, поэтому очень важно в какой части
               списка параметров он использован.
-D <файл>      Путь до файла, куда будет записана отладочная информация. (По умолчанию stderr)
-d <уровень>   Debug level. 0 - минимальный (только критические ошибки), 9 - максимальный. (По умолчанию: 1)
-o <файл>      Использовать этот файл вместо stdout
-i <файл>      Использовать этот файл вместо stdin
-u <секунд>    timeout для операций чтения. 0 - отключает timeout (По умолчанию: 60)

Параметры клиента

-c             Выполнять программу в режиме клиента (для получения листинга файлов и данных)
-f             Не ждать ответа от сервера, даже если размер файла больше 0. (получить листинг файлов без данных)
-x <путь>      Исключить файлы, имя которых начинается с этой строки из листинга (exclude в файле конфигурации)
               Параметр может быть использован несколько раз.

Параметры сервера

-s <file>      Выполнять программу в режиме  сервера. File - путь до командного потока (должен быть использован
               как входной поток для клиента)
-t <ext>       Расширение файлов листинга (По умолчанию .lst)
-l <path>      Путь до листинга от предыдущей резервной копии. Если это каталог, будут проверяться все файлы .lst
               в нем и использован последний (самый свежий).
-n <file>      Путь до первого файла хранилища. Для получения имени следующего файла цифры в имени будут увеличены
               на 1. Например: 0000/99 -> 0001/00 . Если в пути будет использована последовательность "//",
               то никакие ссылки на предыдущие хранилища не будут сделаны, если начало их пути не совпадает с началом
               этого пути, взятого до этой последовательности.
-S <size>      maxoffset. Максимальное смещение файла в файле хранилище.
-m <size>      minsize. Минимальный размер файла, который может быть сохранен как отдельный файл.
-A <ext>       Расширения файлов, которые не надо запаковывать (archive в файле конфигурации).
-R <file>      Удалить старую резервную копию. File - путь до листинга. Никакие ссылки не будут сделаны на файлы
               хранилища этой резервной копии. Этот параметр может быть использован отдельно для безопасного
               освобождения места.
-r <count>     Оставить только count резервных копий (включая новую). Все старые резервные копии будут удалены (см. -R)
-T             Режим проверки хранилища. Никакие данные из предыдущих копий не будут использованы, но все
               файлы для которых совпадут имя, время модификации и размер будут сравнены.

Извлечение из бэкапов

Если не использованы ни -c ни -s, программа будет работать в режиме восстановления. Первый параметр должен быть путь до листинга.

-F             Не останавливаться при ошибках.
-B <dir>       Добавлять к именам файлов хранилища указанную строку. Это может быть путь или URL.
-X <file>      Извлеченные из резервной копии данные будут помещены в tar архив с именем file.
-z             Tar архив (см. -X) будет запакован при помощи gzip

Примеры

mkfifo cmd
cat cmd | ssh server '/usr/local/ispmgr/sbin/ispbackup -c -C /vs/private/1.1.1.1 .' |
      /usr/local/ispmgr/sbin/ispbackup -s cmd > 2009-01-01.lst

Сделает резервную копию каталога /vs/private/1.1.1.1 на сервере server. Листинг будет сохранен в файл 2009-01-01.lst. Файлы хранилища будут также сохранены в текущий каталог с именами 00000001, 00000002 и т.д.

/usr/local/ispmgr/sbin/ispbackup -X backup.tgz -z 2009-01-01.lst ./home

Извлечет каталог home из резервной копии с листингом 2009-01-01.lst и поместит данные в запакованный tar архив backup.tgz

Настройка

В дистрибутиве VDSmanager есть скрипт vdsbackup-remote-new.sh. Для создания резервных копий он должен быть запущен на сервере резервных копий. Этот скрипт читает настройки из файла ~/etc/vdsbackup-remote.conf:

SERVERS="ip1 ip2 ip3"     # список адресов серверов, для которых необходимо создать резервные копии
BACKUP_DIR="/backup"      # каталог, в которых сохранять резервные копии
BACKUP_KEY="~/etc/backup" # ключ ssh для рутового доступа на сервера SERVERS

Резервное копирование будет производиться со всех серверов одновременно. Бинарник ispbackup необходимо скопировать на сервер резервных копий в /root/bin/backup.

Была ли эта информация полезной? Да | Нет
Личные инструменты