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

Rsnapshot (на основе Rsync) — утилита резервного копирования локальной/удалённой файловой системы для Linux


rsnapshot — это локальная/удаленная утилита резервного копирования файловой системы с открытым исходным кодом, написанная на языке Perl, использующая преимущества rsnapshot. Strong>Rsync и SSH для создания запланированных инкрементных резервных копий файловых систем Linux/Unix, занимая при этом только пространство одну полную резервную копию плюс различия и храните эти резервные копии на локальном диске на другом жестком диске, внешнем USB накопителе. , подключенный к NFS диск или просто по сети на другой компьютер через SSH.

В этой статье будет показано, как установить, настроить и использовать rsnapshot для создания добавочных ежечасных, ежедневных, еженедельных и < сильные>ежемесячные локальные резервные копии, а также удаленные резервные копии. Чтобы выполнить все действия, описанные в этой статье, вы должны быть пользователем root.

Шаг 1. Установка Rsnapshot Backup в Linux

Установка rsnapshot с помощью Yum и APT может немного отличаться, если вы используете Red Hat и Дистрибутивы на основе Debian.

На RHEL/CentOS

Сначала вам нужно будет установить и включить сторонний репозиторий под названием EPEL. Перейдите по ссылке ниже, чтобы установить и включить его в своих системах RHEL/CentOS. Пользователям Fedora не требуются какие-либо специальные настройки репозитория.

  1. Установите и включите репозиторий EPEL в RHEL/CentOS 6/5/4.

После того, как вы все настроите, установите rsnapshot из командной строки, как показано.

yum install rsnapshot
В Debian/Ubuntu/Linux Mint

По умолчанию rsnapshot включен в репозитории Ubuntu, поэтому вы можете установить его с помощью команды apt-get, как показано.

apt-get install rsnapshot

Шаг 2. Настройка входа по SSH без пароля

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

  1. Создайте вход без пароля по SSH с помощью SSH Keygen

Шаг 3. Настройка Rsnapshot

Теперь вам нужно будет отредактировать и добавить некоторые параметры в файл конфигурации rsnapshot. Откройте файл rsnapshot.conf с помощью редактора vi или nano.

vi /etc/rsnapshot.conf

Затем создайте каталог резервных копий, в котором вы хотите хранить все свои резервные копии. В моем случае местоположение моего резервного каталога — «/data/backup/». Найдите и отредактируйте следующий параметр, чтобы указать местоположение резервной копии.

snapshot_root			 /data/backup/

Также раскомментируйте строку «cmd_ssh», чтобы разрешить удаленное резервное копирование через SSH. Чтобы раскомментировать строку, удалите «#» перед следующей строкой, чтобы rsnapshot мог безопасно перенести ваши данные на резервный сервер.

cmd_ssh			/usr/bin/ssh

Далее вам нужно решить, сколько старых резервных копий вы хотели бы хранить, поскольку rsnapshot понятия не имел, как часто вы хотите делать снимки. Вам необходимо указать, сколько данных нужно сохранить, добавить интервалы для хранения и сколько каждого из них.

Что ж, настройки по умолчанию достаточно хороши, но я все же хотел бы, чтобы вы включили интервал «ежемесячно», чтобы вы также могли иметь более долгосрочные резервные копии. Пожалуйста, отредактируйте этот раздел, чтобы он выглядел аналогично настройкам ниже.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Еще одна вещь, которую вам нужно отредактировать, — это переменная «ssh_args». Если вы изменили Порт SSH по умолчанию (22) на что-то другое, вам необходимо указать этот номер порта вашего удаленного сервера резервного копирования.

ssh_args		-p 7851

Наконец, добавьте локальные и удаленные каталоги резервного копирования, резервную копию которых вы хотите создать.

Резервное копирование локальных каталогов

Если вы решили создать резервную копию своих каталогов локально на одном компьютере, запись резервной копии будет выглядеть следующим образом. Например, я делаю резервную копию своих каталогов /tecmint и /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Резервное копирование удаленных каталогов

Если вы хотите создать резервную копию каталогов удаленного сервера, вам необходимо указать rsnapshot, где находится сервер и какие каталоги вы хотите создать резервную копию. Здесь я делаю резервную копию каталога «/home» моего удаленного сервера в каталоге «/data/backup» на сервере rsnapshot.

backup		 [email :/home/ 		/data/backup/

Читайте также:

  1. Как выполнить резервное копирование/синхронизацию каталогов с помощью инструмента Rsync (удаленная синхронизация)
  2. Как перенести файлы/папки с помощью команды SCP
Исключить файлы и каталоги

Здесь я собираюсь исключить все, а затем только конкретно определить, что я хочу создать резервную копию. Для этого вам необходимо создать файл исключения.

vi /data/backup/tecmint.exclude

Сначала получите список каталогов, для которых вы хотите создать резервную копию, и добавьте ( – *), чтобы исключить все остальное. Это создаст резервную копию только того, что вы указали в файле. Мой файл исключения выглядит примерно так, как показано ниже.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Использование опции исключения файла может быть очень сложным из-за использования рекурсии rsync. Итак, мой приведенный выше пример может быть не тем, что вы ищете. Затем добавьте файл исключения в файл rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Наконец, вы почти завершили начальную настройку. Прежде чем двигаться дальше, сохраните файл конфигурации «/etc/rsnapshot.conf». Есть много вариантов объяснения, но вот мой пример файла конфигурации.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Все приведенные выше варианты и пояснения аргументов следующие:

  1. config_version 1.2=версия файла конфигурации.
  2. snapshot_root=Место резервного копирования для хранения снимков
  3. cmd_cp=Путь для копирования команды
  4. cmd_rm=Путь для удаления команды
  5. cmd_rsync=Путь к rsync
  6. cmd_ssh=Путь к SSH
  7. cmd_logger=Путь к командному интерфейсу оболочки для системного журнала
  8. cmd_du=Путь к команде использования диска
  9. интервал в час=сколько ежечасных резервных копий следует хранить.
  10. интервал в день=сколько ежедневных резервных копий нужно хранить.
  11. интервал еженедельно=сколько резервных копий нужно хранить еженедельно.
  12. интервал в месяц=сколько резервных копий нужно хранить в месяц.
  13. ssh_args=дополнительные аргументы SSH, например другой порт (-p).
  14. подробный = говорит сам за себя.
  15. уровень журнала=не требует пояснений.
  16. файл журнала=путь к файлу журнала.
  17. exclude_file=Путь к файлу исключения (будет объяснено более подробно)
  18. rsync_long_args=Длинные аргументы для передачи в rsync
  19. файл блокировки=не требует пояснений.
  20. резервная копия=полный путь к объекту резервного копирования, за которым следует относительный путь размещения.

Шаг 4. Проверьте конфигурацию Rsnapshot

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

rsnapshot configtest

Syntax OK

Если все настроено правильно, вы получите сообщение «Синтаксис в порядке». Если вы получаете какие-либо сообщения об ошибках, это означает, что вам необходимо исправить эти ошибки перед запуском rsnapshot.

Затем выполните тестовый запуск одного из снимков, чтобы убедиться, что мы генерируем правильные результаты. Мы берем параметр «hourly» для выполнения тестового запуска с использованием аргумента -t (test). Эта команда ниже отобразит подробный список действий, которые она будет делать, но на самом деле их не выполняет.

rsnapshot -t hourly
Пример вывода
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Примечание. Приведенная выше команда указывает rsnapshot создать резервную копию «ежечасно». Фактически он распечатывает команды, которые он будет выполнять, когда мы его действительно выполним.

Шаг 5. Запуск Rsnapshot вручную

После проверки результатов вы можете удалить опцию «-t», чтобы действительно запустить команду.

rsnapshot hourly

Приведенная выше команда запустит сценарий резервного копирования со всей конфигурацией, которую мы добавили в файл rsnapshot.conf, и создаст каталог «backup», а затем создаст в нем структуру каталогов. который организует наши файлы. После выполнения вышеуказанной команды вы можете проверить результаты, перейдя в каталог резервной копии и просмотрев структуру каталогов с помощью команды ls -l, как показано.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Шаг 6: Автоматизация процесса

Чтобы автоматизировать этот процесс, вам необходимо запланировать запуск rsnapshot через определенные промежутки времени из Cron. По умолчанию rsnapshot поставляется с файлом cron в папке «/etc/cron.d/rsnapshot». Если он не существует, создайте его и добавьте в него следующие строки.

По умолчанию правила снабжены комментариями, поэтому вам необходимо удалить «#» перед разделом планирования, чтобы включить эти значения.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Позвольте мне точно объяснить, что делают приведенные выше правила cron:

  1. Запускается каждые 4 часа и создает ежечасно каталог в каталоге /backup.
  2. Запускается ежедневно в 3:30 утра и создает каталог daily в каталоге /backup.
  3. Запускается еженедельно каждый понедельник в 3:00 утра и создает еженедельный каталог в /backup . каталог.
  4. Запускается каждый ежемесячно в 2:30 ночи и создает ежемесячный каталог в каталоге /backup.

Чтобы лучше понять, как работают правила cron, я предлагаю вам прочитать нашу описывающую статью.

  1. 11 примеров планирования Cron

Шаг 7: Отчеты Rsnapshot

rsnapshot представляет собой изящный небольшой отчетный скрипт Perl, который отправляет вам предупреждение по электронной почте со всеми подробностями о том, что произошло во время резервного копирования данных. Чтобы настроить этот сценарий, вам необходимо скопировать его куда-нибудь в «/usr/local/bin» и сделать его исполняемым.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

Затем добавьте параметр «–stats» в файл «rsnapshot.conf» в раздел длинных аргументов rsync.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Теперь отредактируйте правила crontab, которые были добавлены ранее, и вызовите сценарий rsnapreport.pl, чтобы передать отчеты на указанный адрес электронной почты.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Как только вы правильно добавите вышеуказанные записи, вы получите отчет на свой адрес электронной почты, аналогичный приведенному ниже.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Справочные ссылки

  1. домашняя страница rsnapshot

На этом пока все, если во время установки возникнут какие-либо проблемы, напишите мне в комментариях. А до тех пор следите за обновлениями на TecMint, чтобы увидеть больше интересных статей о мире открытого исходного кода.