Резервное копирование · 4 min read · Jan 02, 2026

Автоматизированные резервные копии с rdiff-backup

Это “копировать и вставить” руководство!

Самый простой способ следовать этому руководству — использовать клиент командной строки/SSH-клиент (например,

PuTTY

для Windows) и просто копировать и вставлять команды (за исключением случаев, когда вам нужно предоставить собственную информацию, такую как IP-адреса, имена хостов, пароли и т. д.). Это помогает избежать опечаток.

Автоматизированные резервные копии с rdiff-backup

Версия 1.0
Автор: Фалко Тимме

Это руководство описывает, как выполнять автоматизированные резервные копии сервера с помощью инструмента rdiff-backup. rdiff-backup позволяет создавать резервные копии через сеть с использованием SSH, так что передача данных зашифрована. Использование SSH делает rdiff-backup очень безопасным, так как никто не может прочитать передаваемые данные. rdiff-backup создает инкрементные резервные копии, тем самым экономя пропускную способность.

Пожалуйста, узнайте больше о возможностях rdiff-backup здесь: http://www.nongnu.org/rdiff-backup/index.html

Проблема в том, что SSH требует пароль для входа, что не очень удобно, если вы хотите запускать rdiff-backup как задачу cron. Необходимость в пароле требует человеческого взаимодействия, чего мы не хотим. Например, чтобы сделать резервную копию каталога /boot на server1.example.com, вы должны ввести rdiff-backup [email protected]::/boot boot на вашем сервере резервного копирования (в этом руководстве мы называем его backup.example.com), что попытается сохранить каталог /boot server1.example.com в каталоге boot backup.example.com. Теперь вот что происходит:

| rdiff-backup@backup:~$ rdiff-backup [email protected]::/boot boot Пароль: ----------------------------------------------------------------- Обнаруженные возможности для исходной (только чтение) файловой системы: Списки управления доступом Выключено Расширенные атрибуты Выключено Ресурсные форки в стиле Mac OS X Выключено Информация Finder Mac OS X Выключено ----------------------------------------------------------------- Предупреждение: права собственности не могут быть изменены на файловой системе в boot/rdiff-backup-data ----------------------------------------------------------------- Обнаруженные возможности для целевой (чтение/запись) файловой системы: Символы, требующие экранирования '' Изменение прав собственности Выключено Жесткая ссылка Включено Директории fsync() Включено Директория inc permissions Включено Списки управления доступом Выключено Расширенные атрибуты Выключено Ресурсные форки в стиле Mac OS X Выключено Информация Finder Mac OS X Выключено ----------------------------------------------------------------- rdiff-backup@backup:~$ |

Вы видите, что во второй строке вас просят ввести root пароль server1.example.com.

Но, к счастью, есть решение: использование публичных ключей. Мы создаем пару ключей (на нашем сервере резервного копирования backup.example.com), один из которых сохраняется в файле на удаленной системе (server1.example.com). После этого нас больше не будут запрашивать пароль, когда мы запускаем rdiff-backup. Это также включает задачи cron, что именно нам и нужно.

О, как вы, возможно, уже догадались из того, что я написал до сих пор, концепция заключается в том, что мы инициируем резервные копии server1.example.com непосредственно с backup.example.com; server1.example.com не должен ничего делать, чтобы быть сохраненным.

Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.

Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!

Шаг 1: Установите rdiff-backup на server1.example.com и backup.example.com

Сначала мы должны установить rdiff-backup на обе server1.example.com и backup.example.com. На системах Debian вы можете сделать это, просто запустив

apt-get install rdiff-backup

На других дистрибутивах установка отличается (на Fedora это может быть что-то вроде yum install rdiff-backup, на Mandriva urpmi rdiff-backup, а на SuSE вы должны использовать yast для установки rdiff-backup).

Шаг 2: Создайте ключи на backup.example.com

На backup.example.com мы создаем группу и непривилегированного пользователя с именем rdiff-backup. Этот пользователь rdiff-backup будет выполнять резервные копии. Мы не хотим, чтобы root выполнял резервные копии по соображениям безопасности!

groupadd -g 3500 rdiff-backup
useradd -u 3500 -s /bin/false -d /backup -m -c “rdiff-backup” -g rdiff-backup rdiff-backup

Вторая команда создает пользователя rdiff-backup с домашним каталогом /backup (который создается автоматически этой командой, если он еще не существует) и который не может войти в систему через оболочку (снова по соображениям безопасности). Если идентификаторы группы и пользователя 3500 уже используются в вашей системе, замените их на другой (свободный) идентификатор.

Затем выполните

su -m rdiff-backup

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

Создайте ключи:

cd /backup
ssh-keygen -t rsa

Вы увидите что-то вроде этого:

| rdiff-backup@backup:~$ ssh-keygen -t rsa Генерация пары ключей rsa (публичный/приватный). Введите файл, в который сохранить ключ (/backup/.ssh/id_rsa): Создан каталог '/backup/.ssh'. Введите пароль (пусто для отсутствия пароля): Введите тот же пароль еще раз: Ваша идентификация сохранена в /backup/.ssh/id_rsa. Ваш публичный ключ сохранен в /backup/.ssh/id_rsa.pub. Отпечаток ключа: 88:18:4e:55:e9:27:8e:2a:44:4b:03:bd:9d:0f:fc:48 rdiff-backup@backup |

Сохранять ключ в /backup/.ssh/id_rsa нормально, так что вы можете просто нажать enter. Важно, чтобы вы не вводили пароль, иначе резервное копирование не будет работать без человеческого взаимодействия, так что снова нажмите enter. В конце концов создаются два файла: /backup/.ssh/id_rsa и /backup/.ssh/id_rsa.pub.

Далее создайте файл /backup/.ssh/config со следующим содержимым:

| host server1_backup hostname server1.example.com user root identityfile /backup/.ssh/id_rsa compression yes cipher blowfish protocol 2 |

Значение host — это то, что мы используем позже для запуска резервного копирования. Вы можете использовать любое имя, которое вам нравится (например, server1_backup, this_is_the_machine_i_want_to_backup и т. д.) (но оно не должно содержать пробелов; подчеркивания допустимы).

Измените разрешения этого файла:

chmod -R go-rwx /backup/.ssh

Теперь мы копируем наш публичный ключ на server1.example.com:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Это будет выглядеть так:

| rdiff-backup@backup:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 23 Аутентичность хоста 'server1.example.com (1.2.3.4)' не может быть установлена. Отпечаток ключа RSA: c7:19:55:7a:54:ce:93:c8:b6:f9:0e:e3:65:24:64:11. Вы уверены, что хотите продолжить подключение (yes/no)? yes Предупреждение: 'server1.example.com' (RSA) был постоянно добавлен в список известных хостов. Пароль: Теперь попробуйте войти в систему, используя "ssh '[email protected]'", и проверьте в: .ssh/authorized_keys чтобы убедиться, что мы не добавили лишние ключи, которые вы не ожидали. rdiff-backup@backup:~$ |

Еще раз вам нужно ввести root пароль server1.example.com. Эта команда копирует публичный ключ пользователя rdiff-backup в файл /root/.ssh/authorized_keys на удаленном сервере server1.example.com.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.