Поиск по сайту:

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


rdiff-backup — это мощный и простой в использовании скрипт Python для локального и удаленного инкрементального резервного копирования, который работает в любой операционной системе POSIX, например Linux, Mac OS X или Cygwin. Он объединяет замечательные функции зеркала и инкрементального резервного копирования.

Примечательно, что он сохраняет подкаталоги, файлы разработки, жесткие ссылки и важные атрибуты файлов, такие как разрешения, владение uid/gid, время модификации, расширенные атрибуты, списки управления доступом и разветвления ресурсов. Он может работать в режиме эффективного использования полосы пропускания по каналу, аналогично популярному инструменту резервного копирования rsync.

rdiff-backup выполняет резервное копирование одного каталога в другой по сети с использованием SSH, подразумевая, что передача данных зашифрована, а значит, безопасна. Целевой каталог (в удаленной системе) представляет собой точную копию исходного каталога, однако дополнительные обратные различия сохраняются в специальном подкаталоге целевого каталога, что позволяет восстановить файлы, потерянные некоторое время назад.

Зависимости

Чтобы использовать rdiff-backup в Linux, вам потребуются следующие пакеты, установленные в вашей системе:

  • Python v2.2 или новее
  • librsync v0.9.7 или новее
  • Модули Python pylibacl и pyxattr не являются обязательными, но необходимы для поддержки списков управления доступом (ACL) POSIX и расширенных атрибутов соответственно.
  • Для работы rdiff-backup-statistics требуется Python версии 2.4 или новее.

Как установить rdiff-backup в Linux

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

Сценарий уже присутствует в официальных репозиториях основных дистрибутивов Linux, просто запустите команду ниже, чтобы установить rdiff-backup, а также его зависимости:

Внутреннее резервное копирование rdiff в Ubuntu

Чтобы установить Rdiff-Backup на Ubuntu Focal или Debian Bullseye или новее (имеет версию 2.0).


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

Чтобы установить Rdiff-Backup на резервные копии Ubuntu для более старых версий (требуется резервная версия 2.0).


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

На CentOS/RHEL 8

Чтобы установить Rdiff-Backup на CentOS и RHEL 8 (из COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

На CentOS/RHEL 7

Чтобы установить Rdiff-Backup на CentOS и RHEL 7 (из COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

На CentOS/RHEL 6


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

О Федоре

Чтобы установить Rdiff-Backup в Fedora 32+.


sudo dnf install rdiff-backup

Как использовать rdiff-резервное копирование в Linux

Как я упоминал ранее, rdiff-backup использует SSH для подключения к удаленным компьютерам в вашей сети, а аутентификацией по умолчанию в SSH является метод имени пользователя и пароля, который обычно требует взаимодействия с человеком.

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

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

Резервное копирование файлов в другой раздел

В приведенном ниже примере создается резервная копия каталога /etc в каталоге Backup в другом разделе:

sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Чтобы исключить определенный каталог, а также его подкаталоги, вы можете использовать опцию --exclude следующим образом:

sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Мы можем включить все файлы устройств, файлы fifo, файлы сокетов и символические ссылки с помощью опции --include-special-files, как показано ниже:

sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Есть еще два важных флага, которые мы можем установить для выбора файла; --max-file-size size, который исключает файлы, размер которых превышает заданный размер в байтах, и --min-file-size size, который исключает файлы размером меньше заданный размер в байтах:

sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Резервное копирование удаленных файлов на локальном сервере Linux

Для целей этого раздела мы будем использовать:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

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

rdiff-backup -V

На сервере резервного копирования создайте каталог, в котором будут храниться файлы резервных копий, следующим образом:

mkdir -p /backups

Теперь с сервера резервного копирования выполните следующие команды, чтобы создать резервную копию каталогов /var/log/ и /root с удаленного сервера Linux 192.168.56.102 в /backups:

rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

На снимке экрана ниже показан корневой файл на удаленном сервере 192.168.56.102 и файлы резервной копии на заднем сервере 192.168.56.10:

Обратите внимание на каталог rdiff-backup-data, созданный в каталоге backup, как показано на снимке экрана. Он содержит важные данные, касающиеся процесса резервного копирования и инкрементных файлов.

Теперь на сервере 192.168.56.102 в корневой каталог добавлены дополнительные файлы, как показано ниже:

Давайте запустим команду резервного копирования еще раз, чтобы получить измененные данные. Мы можем использовать опцию -v[0-9] (где число указывает уровень детализации, по умолчанию — 3, что означает молчание), чтобы установите функцию многословия:

rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

А чтобы просмотреть количество и дату частичных инкрементальных резервных копий, содержащихся в каталоге /backups/192.168.56.102_rootfiles.backup, мы можем запустить:

rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Автоматизация резервного копирования rdiff с помощью Cron

Мы можем распечатать сводную статистику после успешного резервного копирования с помощью --print-statistics. Однако, если мы не установим эту опцию, информация все равно будет доступна из файла статистики сеанса. Подробнее об этой опции читайте в разделе СТАТИСТИКА на странице руководства.

А флаг –remote-schema позволяет нам указать альтернативный метод подключения к удаленному компьютеру.

Теперь давайте начнем с создания сценария backup.sh на сервере резервного копирования 192.168.56.10 следующим образом:

cd ~/bin
vi backup.sh

Добавьте следующие строки в файл сценария.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Сохраните файл и выйдите, затем выполните следующую команду, чтобы добавить сценарий в crontab на резервном сервере 192.168.56.10:

crontab -e

Добавьте эту строку, чтобы запускать сценарий резервного копирования ежедневно в полночь:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Сохраните crontab и закройте его. Теперь мы успешно автоматизировали процесс резервного копирования. Убедитесь, что он работает должным образом.

Прочтите справочную страницу rdiff-backup для получения дополнительной информации, исчерпывающих вариантов использования и примеров:

man rdiff-backup

Домашняя страница rdiff-backup: http://www.nongnu.org/rdiff-backup/

На этом всё! В этом руководстве мы показали вам, как установить и использовать rdiff-backup, простой в использовании скрипт Python для локального/удаленного инкрементального резервного копирования в Linux. Поделитесь с нами своими мыслями через раздел обратной связи ниже.