Настройка резервного копирования с помощью Rdiff-backup на Debian/Ubuntu

Rdiff-backup написан на Python и использует библиотеку librsync для передачи данных.
Умеет копировать файлы на удаленный хост.
Также можно делать бекап с удаленного хоста, но предварительно нужно установить там Rdiff-backup.
Хранит информацию об изменениях файлов (дельты) в сжатом виде, хорошо для больших файлов, позволяет экономить место на диске.
Метаданные (права, даты, владелец) хранятся в отдельных файлах.
Наличие конфигурационного файла не предполагается. Автоматизировать придется самому.
Запуск бекапа производится из консоли.
В качестве источника/назначения могут быть локальные файловые системы на том же сервере или удалённое копирование поверх ssh/rsync протоколов.

Например, при локальном копировании

При удаленном копировании
С локального сервера на удаленный

C удаленного на локальный

По-умолчанию rdiff-backup выполняет задания с уровнем детализации (verbosity) = 3. Возможные значения — от 0 до 9.
0=не выводить ничего, даже критические ошибки.
9=максимально возможный детальный лог
Можем регулировать любыми значениями от 0 до 9.

 

1. Установка Rdiff-backup

 

2. Использование Rdiff-backup

Локальное бекапирование
Например, сдеалем бекап каталога /etc/

В качестве получателя необходимо указывать либо пустой, либо несуществующий каталог, иначе rdiff-backup откажет в выполнении бекапа

 

Удаленное бекапирование (на удаленном сервере предварительно также необходимо установить Rdiff-backup)
Для удобства копирвоания настроим аутентификацию по SSH-ключам

С локального сервера на удаленный

После завершения сессий архивации rdiff-backup создаёт в каталоге архива специальный файл

, содержащий разнообразную статистическую информацию о результатах сессии.

Этот файл доступен для просмотра

Утилита предлагает специальную опцию —calculate-average, при помощи которой можно получить общее представление об архиве,

Для просмотра статистки при выполнении бекапа можно использовать опцию —print-statistics

Поскольку rdiff-backup выполняет инкрементное копирование, при регулярном архивировании часто изменявшиеся в прошлом файлы будут иметь несколько версий. Чтобы получить информацию об имеющихся в архиве инкрементах файлов/каталогов, используем ключ —list-increments:

 

Получение списка файлов на определённый момент времени
Список всех файлов в архиве, которые в нём содержались 2 версии назад, включая также файлы, которые были удалены в последующих версиях:

Аналогично, но выводит список файлов/каталогов, которые в нем содержались 1 день назад, включая также файлы, которые были удалены в течение последних суток

 

Получение списка изменявшихся файлов
Часто бывает необходимо получить список файлов, которые модифицировались за определённый промежуток времени.
Список файлов, которые менялись за последние 10 минут:

 

Сравнение архива и текущего состояния файлов
Список всех файлов, которые были изменены в каталоге /etc с момента его последней архивации в каталог /backup1/etc на удаленный сервер 192.168.10.56

 

3. Восстановление бекапа
Поскольку rdiff-backup хранит файлы в открытом/неизменном, то в случае необходимости восстановить файл-каталог можно просто скопировать его обратно из архива обычной командой cp (если бекап локального каталога выполнялся локально)

Для восстановления из удаленного сервера используем команду rdiff-backup

Восстановить(-r) файл /etc/newfile.txt из последней версии архива(now),расположенного на удаленной системе(192.168.10.56 в каталоге /backup1/etc)

Т.к файл на приемнике уже существует, то rdiff-backup отказывается его заменять и предлагает использовать опцию —force для принудительной перезаписи существующего файла

Если необходимо восстановить определенную копию файла newfile.txt, а не последнюю, то для начала просмотрим существующие версии файла

Восстановим нужную версию файла, указав нужную версию файла из каталога increments

Если необходимо восстановить файл на одну версию назад(старше)

Или через указание даты

 

4. Удаление старых версий
Для удаления бекапов старше определенного времени используется опция
—remove-older-than.
Например, удаляем бекапы старше одного месяца:

Или удаляем бекапы старше 5 сессий/версий

 

5. Исключение каталогов/файлов из бекапа

Создадим бекап всей файловой системы за исключением содержимого указанных каталогов, указанных в опции —exclude

Иногда проще указать то, что нужно скопировать, вместо того, что НЕ нужно. Следующая команда скопирует, например, /usr/local/bin, пропустив при этом /usr/bin:

при множественном использовании опций ‘—include’ / ‘—exclude’ их приоритет зависит от порядка появления в команде.

rdiff-backup позволяет использовать шаблоны подобные тем, которые используются в rsync: ‘**’ эквивалентны любому пути, а ‘*’ — любому пути без завершающего слеша. Так, например, следующая команда скопирует /usr/local и /var, но пропустит всё остальное:

Кавычки нужны, поскольку большинство оболочек обрабатывают звёздочки как спецсимволы, превращая их в маски.

 

6. Создание скрипта для бекапа
Создадим скрипт для бекапа и добавим его в планировщик заданий cron на ежесуточное выполнение

Выставляем бит исполнения для скрипта и добавляем его в сron

 

при использовании нестандартного порта SSH при подключении к удаленному хосту указываем порт SSH в опции  —remote-schema

По умолчанию используется следующая —remote-schema

 

Скрипт для бекапа с удаленного сервера каталога с данными

 

Источник:

http://ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/#.V8_V0zW22Ul
http://ashep.org/2012/rabota-s-arxivami-rdiff-backup/#.V8_ZsTW22Ul
http://www.hilik.org.ua/rdiff-backup/
http://www.nongnu.org/rdiff-backup/examples.html

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика