Настройка сервера резервного копирования с помощью Rsnapshot в Linux
Учебное пособие по Rsnapshot для начинающих
В этом руководстве объясняется, что такое Rsnapshot, как установить Rsnapshot в Linux и как настроить сервер резервного копирования с помощью Rsnapshot в Linux.
1. Введение
Rsnapshot — это утилита создания снимков файловой системы, основанная на rsync для Linux и Unix-подобных операционных систем. Он позволяет легко создавать периодические снимки локальных и удаленных компьютеров через ssh.
Преимущество rsnapshot в том, что он по возможности широко использует жесткие ссылки, что значительно сокращает требуемое дисковое пространство.
Поскольку rsnapshot хранит только фиксированное количество снимков, объем используемого дискового пространства не будет постоянно расти.
Rnapshot — это бесплатное приложение для резервного копирования с открытым исходным кодом, которое поддерживает инкрементальное резервное копирование. Он полностью написан на Perl и должен работать на большинстве Unix-подобных систем.
Без лишних слов, давайте продолжим и посмотрим, как установить, настроить и настроить сервер резервного копирования с помощью Rsnapshot в Linux.
2. Установите Rsnapshot в Linux.
Rsnapshot поставляется во многих дистрибутивах Linux.
Установить Rsnapshot в Alpine Linux:
sudo apk add rsnapshot rsync
Установите Rsnapshot — Arch Linux, EndeavourOS и Manjaro Linux:
sudo pacman -S rsnapshot rsync
Установите Rsnapshot в Debian, Ubuntu, Linux Mint, Pop_OS!:
sudo apt install rsnapshot rsync
Установите Rsnapshot в CentOS, Fedora, RHEL, AlmaLinux, Rocky Linux:
Rsnapshot недоступен в репозиториях по умолчанию корпоративных операционных систем, таких как CentOS, RHEL, AlmaLinux и Rocky Linux. Вам необходимо включить репозиторий [EPEL], чтобы установить Rsnapshot.
sudo dnf install epel-release
Затем установите Rsnapshot с помощью команды:
sudo dnf install rsnapshot rsync
Установить Rsnapshot в openSUSE:
sudo zypper install rsnapshot rsync
3. Настройте сервер резервного копирования с помощью Rsnapshot в Linux.
Для целей данного руководства я буду использовать две тестовые системы.
Один из них — сервер резервного копирования, работающий под управлением AlmaLinux 8, а другой — клиентская система. Клиент работает с настольным компьютером Fedora 34.
Подробная информация о резервном сервере и клиенте приведена ниже.
Резервный сервер:
- ОС: AlmaLinux 8 64-битная минимальная система.
- IP-адрес: 192.168.122.25/24.
- Корневой каталог Rsnapshot: /rsnapbackup
- Каталог для резервного копирования: /home/ostechnix/data/
Клиент:
- ОС: Fedora Workstation 34.
- IP-адрес: 192.168.225.37/24.
- Каталог для резервного копирования: /home/sk/data/
3.1. Настройка SSH-аутентификации без пароля на резервном сервере
Чтобы выполнить резервное копирование файлов удаленной клиентской системы через SSH, вам необходимо настроить SSH-аутентификацию без пароля для удаленных клиентских систем, чтобы резервное копирование автоматически подключалось к клиентской системе без пароля и создавало резервную копию данных клиента.
Войдите в систему как пользователь root
и создайте пару ключей SSH в нашей системе резервного сервера.
ssh-keygen
Не вводите парольную фразу, потому что мы хотим, чтобы эти системы могли подключаться друг к другу без вмешательства пользователя:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:k/yIpwuk2lqEVxW4O0/6evTjquxCcGffQU0Kgm1ZvPk root@alma8
The key's randomart image is:
+---[RSA 3072]----+
| o.==. o. |
| . =o..... |
| ... +. |
|....+ o... |
|.ooo.o oS. |
| o.oo +.E+ |
| .o .*..o . |
| +....ooo |
|o..o===+.. |
+----[SHA256]-----+
Настройка SSH-аутентификации без пароля
Затем скопируйте открытый ключ SSH во все удаленные клиентские системы.
ssh-copy-id sk@192.168.225.37
Замените sk
и 192.168.225.37
в приведенной выше команде именем пользователя и IP-адресом вашей удаленной системы. Введите пароль пользователя вашей клиентской системы, чтобы скопировать файл открытого ключа:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sk@192.168.225.37's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'sk@192.168.225.37'"
and check to make sure that only the key(s) you wanted were added.
Здесь 192.168.225.37 — это IP-адрес моей удаленной клиентской системы (т. е. Fedora Desktop).
Теперь вы можете войти в клиентскую систему по SSH без пароля.
Повторите приведенную выше команду, чтобы скопировать открытый ключ ssh во все ваши клиентские системы и настроить аутентификацию без пароля.
Далее нам нужно настроить Backup-сервер.
3.2. Конфигурация сервера резервного копирования Rsnapshot
Создайте Корневой каталог резервных копий, чтобы сохранять все резервные копии вашего сервера и клиентских систем.
Для целей данного руководства я использую /rsnapbackup/
в качестве корневого каталога резервных копий. Это каталог, в котором я буду хранить все резервные копии.
Вы можете определить свое собственное местоположение для хранения резервных копий.
Давайте создадим корневой каталог резервных копий на нашем сервере резервных копий с помощью команды:
mkdir /rsnapbackup
Далее нам нужно отредактировать и обновить корневой каталог резервного копирования, каталоги, которые вы хотите создать резервную копию, и интервалы резервного копирования в файле конфигурации Rsnapshot по умолчанию /etc/rsnapshot.conf
.
Перед редактированием конфигурации всегда рекомендуется сделать резервную копию файла конфигурации по умолчанию на случай, если вам понадобится снова перенастроить rsnapshot.
cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak
Теперь отредактируйте файл конфигурации rsnapshot с помощью команды:
nano /etc/rsnapshot.conf
Конфигурация по умолчанию должна работать нормально. Все, что вам нужно сделать, это просто определить каталоги резервного копирования и интервалы резервного копирования.
Внимание! Обратите внимание, что вам следует указать конечную косую черту в конце имен каталогов в файле /etc/rsnapshot.conf
. Скажем, например, вы должны указать имя каталога как /rsnapbackup/
, но не /rsnapbackup
. Кроме того, вам необходимо использовать табуляцию (а не пробелы) между элементами/полями.
Сначала давайте настроим корневой каталог резервных копий, т.е. определим каталог, в котором мы хотим хранить резервные копии файловой системы. В нашем случае я буду хранить резервные копии в каталоге /rsnapbackup/
.
All snapshots will be stored under this root directory.
#
snapshot_root /rsnapbackup/
Определите корневой каталог Rsnapshot
Опять же, вам следует использовать клавишу TAB между элементом snapshot_root и каталогом резервной копии.
Примечание. Rsnapshot не поддерживает удаленный корень моментального снимка через SSH.
Прокрутите немного вниз и убедитесь, что следующие строки (выделены жирным шрифтом) раскомментированы:
[...]
#################################
EXTERNAL PROGRAM DEPENDENCIES #
#################################
LINUX USERS: Be sure to uncomment "cmd_cp". This gives you extra features.
EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
See the README file or the man page for more details.
#
cmd_cp /usr/bin/cp
uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm /usr/bin/rm
rsync must be enabled for anything to work. This is the only command that
must be enabled.
#
cmd_rsync /usr/bin/rsync
Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh /usr/bin/ssh
Comment this out to disable syslog support.
#
cmd_logger /usr/bin/logger
Uncomment this to specify the path to "du" for disk usage checks.
If you have an older version of "du", you may also want to check the
"du_args" parameter below.
#
cmd_du /usr/bin/du
[...]
Раскомментируйте зависимости внешней программы
Далее нам нужно определить интервалы резервного копирования:
#########################################
BACKUP LEVELS / INTERVALS #
Must be unique and in ascending order #
e.g. alpha, beta, gamma, etc. #
#########################################
retain alpha 6
retain beta 7
retain gamma 4
#retain delta 3
Определить уровни резервного копирования
Здесь сохранить альфа-версию 6 означает, что каждый раз при запуске rsnapshot альфа будет создаваться новый снимок, вращаться старые и сохраняться шесть последних резервных копий в каталогах с именем alpha.0
, alpha.1
,... alpha.5
в корневом каталоге Rsnapshot. Тогда при следующем запуске команды каталог alpha.5
будет удален.
Аналогично, когда мы каждый раз вызываем rsnapshot beta
, он создает новый снимок, ротирует старые и сохраняет 7 последних резервных копий (delta.0 – delta.6).
Обратите внимание, что альфа
, бета
, гамма
и дельта
— это всего лишь имена, определяющие интервалы резервного копирования. Вы также можете определить свои собственные интервалы.
Например, вы можете заменить уровни резервного копирования по умолчанию на некоторые значимые имена по вашему выбору, как показано ниже:
retain hourly 24
retain daily 7
retain weekly 4
retain monthly 12
Когда мы вызываем rnsapshothourly
, он создает новую резервную копию в каталоге
. Когда вы запускаете эту команду каждый раз, она будет создавать новые каталоги до
.
То же самое касается ежедневного, еженедельного и ежемесячного резервного копирования.
Затем раскомментируйте следующую строку, если вы хотите установить файл журнала для Rsnapshot:
logfile /var/log/rsnapshot
Если вы изменили порт SSH по умолчанию, вам необходимо раскомментировать эту строку и указать здесь действительный номер порта:
ssh_args -p 2222
Наконец, вам нужно определить каталоги, для которых вы хотите создать резервную копию. Найдите следующие директивы в файле конфигурации rsnapshot и установите расположение каталогов резервных копий.
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
LOCALHOST
backup /home/ostechnix/data/ myserverbackup/
Здесь я собираюсь сделать резервную копию содержимого каталога /home/ostechnix/data/
и сохранить его в /rsnapbackup/myserverbackup/
каталог.
Внимание! Обратите внимание, что я не указал полный путь (т. е. /rsnapbackup/myserverbackup/
) в приведенной выше конфигурации. Потому что ранее мы уже упоминали корневой каталог резервных копий. Поэтому нам не нужно указывать здесь корневой каталог Rsnapshot.
Аналогичным образом определите местоположение резервной копии удаленных клиентских систем.
REMOTEHOST
backup sk@192.168.225.37:/home/sk/data/ myclientbackup/
Здесь я собираюсь сделать резервную копию содержимого каталога /home/sk/data/
моей удаленной клиентской системы и сохранить его в /rsnapbackup/myclientbackup. /
на моем сервере резервного копирования.
Еще раз обратите внимание, что я не указал полный путь (/rsnapbackup/myclientbackup/
) в приведенной выше конфигурации. Потому что мы уже определили корневой каталог резервной копии.
Определите каталоги для резервного копирования в Rsnapshot
Сохраните и закройте файл /etc/rsnapshot.conf
.
После внесения всех изменений выполните следующую команду, чтобы убедиться, что файл конфигурации синтаксически допустим.
rsnapshot configtest
Если все в порядке, вы увидите следующий вывод.
Syntax OK
3.3. Запустить резервное копирование
Выполните следующую команду, чтобы вручную запустить резервное копирование с помощью Rsnapshot.
rsnapshot alpha
Создание первой резервной копии займет от нескольких минут до нескольких часов в зависимости от размера резервных копий. Последующие резервные копии будут выполняться намного быстрее, поскольку Rsnapshot создаст резервные копии только различий.
Аналогичным образом вы можете запустить и другие уровни резервного копирования:
rsnapshot beta
rsnapshot gamma
rsnapshot daily
3.4. Проверка и просмотр резервных копий
Давайте проверим, действительно ли резервные копии хранятся в корневом каталоге резервных копий на сервере резервного копирования.
ls /rsnapbackup/
Вы увидите следующий результат:
alpha.0
Проверьте содержимое каталога alpha.0
:
ls /rsnapbackup/alpha.0/
Вы увидите, что автоматически создаются два каталога: один для локального резервного копирования (myserverbackup), а другой для удаленных систем (myclientbackup).
myclientbackup myserverbackup
Чтобы проверить резервные копии клиентской системы, запустите:
ls /rsnapbackup/alpha.0/myclientbackup/
Проверьте резервные копии серверной системы (локальной системы):
ls /rsnapbackup/alpha.0/myserverbackup/
Просмотр резервных копий Rsnapshot
При каждом запуске Rnaspshot будут создаваться новые каталоги, такие как alpha.0
, alpha.1
и т. д., в зависимости от настроенного вами количества уровней сохранения.
# ls /rsnapbackup/
alpha.0 alpha.1
Каталог alpha.0
будет содержать самую последнюю резервную копию.
3.5. Планирование резервного копирования
Вам не нужно каждый раз запускать команду rsnapshot для создания резервных копий. Просто определите задание cron, чтобы автоматизировать задания резервного копирования через регулярные промежутки времени.
Для этого создайте новый файл задания cron для rsnapshot:
nano /etc/cron.d/rsnapshot
Добавьте следующие строки:
0 */4 * * * /usr/bin/rsnapshot alpha
50 23 * * * /usr/bin/rsnapshot beta
00 22 1 * * /usr/bin/rsnapshot delta
В первой строке указано, что будет делаться шесть альфа снимков каждый день (в 0, 4, 8, 12, 16 и 20 часов), бета снимков каждую ночь. в 23:50, а дельта снимки будут делаться в 22:00 первого дня каждого месяца. Вы можете настроить время по своему желанию. Сохраните и закройте файл.
Сделанный! С этого момента Rsnapshot будет автоматически создавать резервные копии ваших данных в определенное время.
Более подробную информацию можно найти на страницах руководства.
man rsnapshot
4. Восстановить файлы
Восстановить файлы легко! Если у вас есть доступ sudo
или root
на сервере резервного копирования, вы можете просто скопировать файлы из корневого каталога Rsnapshot, то есть /rsnapbackup/
.
5. Вывод
Настроить сервер резервного копирования с помощью Rsnapshot в Linux не так уж и сложно. Первоначальная настройка может показаться сложной и занять некоторое время. Но как только вы правильно настроите сервер резервного копирования Rsnapshot, он будет работать «из коробки» всегда, без какого-либо вмешательства пользователя.
Ресурсы:
- Сайт Rsnapshot
- Репозиторий Rsnapshot на GitHub
Связанное чтение:
- Как сделать резервную копию всей вашей системы Linux с помощью Rsync
- Как создать резервную копию файлов и каталогов с помощью Rsync в Linux
- Как создать резервную копию и восстановить файлы с помощью Deja Dup в Linux
- Как сделать резервную копию и восстановить систему Linux с помощью Timeshift
- Как синхронизировать файлы с Unison в Linux
- Как синхронизировать локальные и удаленные каталоги в Linux
- Как синхронизировать файлы и каталоги с помощью Zaloha.sh
- CYA – утилита для создания снимков и восстановления системы для Linux
- Restic – быстрое, безопасное и эффективное приложение для резервного копирования