URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 46139
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Использование rdiff-backup"

Отправлено auto_tips , 04-Дек-08 23:10 
Иногда при проведении резервного копирования, бэкапов, не требуется вся мощь систем уровня предприятия,
таких как, например, Bacula. Но, с другой строны, не совсем подходят и простые самописные скрипты.
Как всегда, требуется что-то среднее.

Вот тут-то и следует обратить внимание на rdiff-backup (http://www.nongnu.org/rdiff-backup/).

rdiff-backup - это кучка скриптов на питоне, которые хранят историю файлов, сохраняя на диске только их отличия.
rdiff-backup бэкапит один каталог в другой. Целевой каталог в результате содержит
копию исходного каталога. Различия текущей и предыдущей копий исходного каталога сохраняются
в отдельном месте, поэтому можно восстановить и удаленные файлы. rdiff-backup может
также работать через конвейер с ограничением полосы пропускания, подобно rsync.
Вы можете использовать rdiff-backup и ssh для безопасного копирования данных на удаленную систему,
причем передаваться будут только различия. Система корректно работает с символическими ссылками,
файлами устройств, правами и т.д. и может быть использована для копирования всей файловой системы.

На сервере-хранилище-бэкапов и всех серверах, учавствующих в резервном копировании необходимо установить rdiff-backup.

Авторизацию для ssh делаем с помощью AuthorizedKeysFile.

Если на хосте-хранилище-бэкапов используется нестандартный порт для ssh,
то на хосте откуда бэкапим (клиенте) делаем файл ~/.ssh/config

   Host host.tld
      Port 3333
      Protocol 2
      Compression yes


Пример скрипта

Скрипт бэкапит базу MySQL и каталоги виртуальных хостов с клиента (client.tld) на сервер бэкапов (host.tld).
Чтобы быстро находить нужный бэкап, на хосте-хранилище-бэкапов создаются каталоги
по именам хостов-клиентов и далее уже в каждом из них хранится дерево каталогов, как и в оригинале.

   #!/bin/sh

   TMPDIR="/tmp/mysqldump"
   DUMPFILE="${TMPDIR}/client.tld.mysqldump"

   echo -e "\nmysqldump start...\n"
   mkdir "${TMPDIR}"

   /usr/bin/mysqldump --single-transaction --quick --skip-extended-insert \
      -uUSER -pPASSWORD NAMEDB > "${DUMPFILE}"
   /usr/bin/rdiff-backup --print-statistics "${TMPDIR}" \
      user@host.tld::"client.tld/mysqldump"
   rm -f "${DUMPFILE}"
   rmdir --ignore-fail-on-non-empty "${TMPDIR}"

   echo -e "\n\nstart /var/www/vhosts backup ...\n"

   /usr/bin/rdiff-backup --create-full-path --exclude-symbolic-links --exclude-sockets \

      --exclude-special-files --exclude-fifos --exclude-device-files --no-hard-links \
      --print-statistics \
      "/var/www/vhosts" user@host.tld::"client.tld/var/www/vhosts"

В cron'е можно изобразить что-нибудь типа:

  /root/bin/mybackup.sh | \
      /bin/mail -c "admin@domain.com" -s "`uname -n` backup report" root@localhost

Вы будете получать примерно такие отчеты:

   --------------[ Session statistics ]---------
   StartTime 1227924257.00 (Sat Nov 29 02:04:17 2008)
   EndTime 1227924381.73 (Sat Nov 29 02:06:21 2008)
   ElapsedTime 124.73 (2 minutes 4.73 seconds)
   SourceFiles 2883
   SourceFileSize 31441627 (30.0 MB)
   MirrorFiles 2883
   MirrorFileSize 31441627 (30.0 MB)
   NewFiles 0
   NewFileSize 0 (0 bytes)
   DeletedFiles 0
   DeletedFileSize 0 (0 bytes)
   ChangedFiles 0
   ChangedSourceSize 0 (0 bytes)
   ChangedMirrorSize 0 (0 bytes)
   IncrementFiles 0
   IncrementFileSize 0 (0 bytes)
   TotalDestinationSizeChange 0 (0 bytes)
   Errors 0


Восстановление

Если что-то случится с rdiff-backup, то восстановить данные можно простым копированием, и это важно.

Пример стандартной команды для восстановления (где host.tld - хост-хранилище-бэкапов) :

   rdiff-backup -r now user@host.tld::"client.tld/var/www/vhosts" /tmp/vhosts

Восстановление файлов в состоянии как 10 дней назад :

   rdiff-backup -r 10D user@host.tld::"client.tld/var/www/vhosts" /tmp/vhosts

см. также секцию TIME FORMATS в man.

Дополнительно

Существует RdiffWeb для web-доступа к резервным копиям, сделанным утилитой rdiff-backup.


Дополнение от редактора:

При использовании стандартного rsynx, для отдельного сохранения изменений накопившихся за день
в отдельной директории, можно использовать примерно такой скрипт:

   snapshot_dir="/snapshot/backup_snap/`date \+\%Y_\%m_\%d`"
   mkdir $snapshot_dir
   /usr/local/bin/rsync -a -v --delete --max-delete=1000 --hard-links \
      --delete-excluded --exclude-from=/etc/rsync_backup.exclude / /backup \
      --backup --backup-dir=$snapshot_dir

В /etc/rsync_backup.exclude добавляем список исключений ( в конце "/*" чтобы директория создалась):

   /backup/*
   /snapshot/*
   /mnt/*
   /var/log/*
   /proc/*
   ... и т.п.

Для чистки снапшотов старее 30 дней, в cron добавляем:

   find /snapshot/backup_snap/ -type d -maxdepth 1 -mtime +30 -exec rm -rf {} \;


URL: http://sysadminonline.ru/rdiff-backup-howto/
Обсуждается: https://www.opennet.ru/tips/info/1857.shtml


Содержание

Сообщения в этом обсуждении
"Использование rdiff-backup"
Отправлено Pilat , 04-Дек-08 23:10 
>Если что-то случится с rdiff-backup, то
>восстановить данные можно простым копированием, и
>это важно.

Если архив накроется - а накрывается он довольно часто, - восстановить его непросто.

Две проблемы у rdiff-backup: очень много файлов, на ftp не закинуть, и проблемы после прерывания процесса бэкапирования. По сути это система сохранения версий состояния системы, а не создания бэкапов.

Достоинство - даже базы mysql он копирует инкрементально, только изменения. Конечно, базы данных бех проверки md5 копировать не стоит.


"Использование rdiff-backup"
Отправлено anonymous , 05-Дек-08 17:19 
По своему опыту использования rdiff-backup, от которого в итоге пришлось отказаться, хочу предостеречь, что если он бэкапит директорию, где в это время удалился файл, то процесс аварийно завершается с жалобой "файл пропал". Было это 2 года назад, так что может в новых версиях ошибки нет.

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

А вообще SVN рулит - инструментарий работы с данными несравнимо шире, есть репликация репозиториев, GUI-клиенты (простой - RapidSVN, онлайновый - http://www.viewvc.org). Репозиторий кстати сжатый (формат delta3).


"Использование rdiff-backup"
Отправлено Alman , 22-Дек-08 15:04 
Очень хочется знать, есть ли эффективный способ использования rdiff-backup на виндовой тачке? Если есть, то не могди бы вы его описать.