Резервное копирование · 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.
Get new posts in your inbox
No spam. Unsubscribe anytime.