Серверов много, информация критична, что делать? Распространенный вопрос среди администраторов win и nix-систем. Проженные админы, наученные горьким опытом, в один голос скажут: "БЕКАПЫ СПАСУТ ЭТОТ МИР". Давай рассмотрим с тобой, мой милый друг, замечательную утилиту для инкрементального резервирования файловой системы - rsnapshot.
rsnapshot – Базирующаяся на rsync утилита на Perl для создания резервных копий. Особенностью является ориентация на создания полных снапшотов файловой системы через заданный интервал времени, для экономии места на диске, не изменившиеся с момента первого бэкапа файлы линкуются как hard link.
ставим:
# dpkg -l | grep rsnapshot ii rsnapshot 1.3.0-2 all local and remote filesystem snapshot utility
конфигурационный файл всего один, находится в /etc, зовется rsnapshot.conf
Как видно, конфигурация минимальна и проста, ВНИМАНИЕ! использовать только табы, никаких пробелов!
config_version 1.2 #директория для снапшотов, осторожно! подготовьте для резервного копирования раздел с избыточным местом, данных много - места будет кушать много snapshot_root /var/backups/ #утилиты, которые понадобятся для копирования ################################# # EXTERNAL PROGRAM DEPENDENCIES # ################################# 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 cmd_rsnapshot_diff /usr/bin/rsnapshot-diff #тип, количество копий для каждого бекапа (часы, дни, недели, месяцы) ######################################### # BACKUP INTERVALS # ######################################### interval hourly 12 interval daily 7 interval weekly 4 interval monthly 3 ############################################ # GLOBAL OPTIONS # ############################################ verbose 2 #уровень информирования, когда утилита запущена, это значение установлено по умолчанию - показывать только предупреждения и ошибки loglevel 3 #почти тоже самое, что и verbose, но здесь мы указываем насколько детально писать в логи lockfile /var/run/rsnapshot.pid link_dest 1 #поддержка ссылок ############################### ### BACKUP POINTS / SCRIPTS ### ############################### #что копировать, куда копировать #server 1 backup root@server1.ru:/etc/ server1.ru/ backup root@server1.ru:/home/ server1.ru/ backup root@server1.ru:/var/backups/postgresql/ server1.ru/ #server2 backup root@server2.com:/etc/ server2.com/ backup root@server2.com:/home/someuser/ server2.com/ backup root@server2.com:/usr/share/tomcat5.5/ server2.com/ #Также, делаем бекап локальной файловой системы # local backup /etc/ local/ backup /home/someuser/ local/
Теперь немного о том, как будет происходить бекап. Утилита rsnapshot работает через протокол rsync, а он в свою очередь работает через ssh, поэтому нам необходимо создать пару ключей для сервера, на котором и будет запускаться rsnapshot+rsyncd, естественно следует учесть, что бекапы мы должны делать от суперпользователя root, иначе мы просто не сможем забрать файлы например из /etc.
Создаем пару ключей:
root# ssh-keygen
в /root/.ssh/ появились два файла id_rsa и id_rsa.pub, копируем содержимое публичного ключа, и вставляем в файл /root/.ssh/authorized_keys на удаленной машине (на машине, которую хотим забекапить), это нужно для того, чтобы при автоматическом копировании через ssh у нас не спрашивали пароль пользователя, думаю это очевидно!
Нам осталось добавить расписание в cron:
# cat /etc/cron.d/rsnapshot MAILTO=mail@gmail.com 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
По прошествии некоторого времени, мы сможем увидеть директории с бекапами, для этого выполним команду:
# rsnapshot du 223G /var/backups/hourly.0/ 65M /var/backups/hourly.1/ 67M /var/backups/hourly.2/ 67M /var/backups/hourly.3/ 65M /var/backups/hourly.4/ 66M /var/backups/hourly.5/ 66M /var/backups/hourly.6/ 66M /var/backups/hourly.7/ 66M /var/backups/hourly.8/ 66M /var/backups/hourly.9/ 66M /var/backups/hourly.10/ 69M /var/backups/hourly.11/ 68M /var/backups/daily.0/ 67M /var/backups/daily.1/ 66M /var/backups/daily.2/ 1.7G /var/backups/daily.3/ 47G /var/backups/daily.4/ 91M /var/backups/daily.5/ 305M /var/backups/daily.6/ 343M /var/backups/weekly.0/ 410M /var/backups/weekly.1/ 977M /var/backups/weekly.2/ 429M /var/backups/monthly.0/ 32G /var/backups/monthly.1/ 305G total
Ну вот и все, важные файлы и директории будут постоянно бекапиться, данный пример понадобится при не супер критичном использования сервера, другой вопрос, если есть highload проект, в этом случае реализация резервного копирования перетекает в настройку синхронной/асинхронной репликации средствами кластерных ФС и блочных устройств, но об этом поговорим в другой статье.
Полезные команды:
rsnapshot configtest - проверяет конфигурационный файл на наличие синтаксических ошибок
rsnapshot du - выведет листинг директорий с бекапами и размер занимаемый этой директорией
rsnapshot с ключом -t - тест-режим, покажет только выполняемые команды, без их выполнения
Полезные ссылки:
http://www.rsnapshot.org/
Комментарии
10 лет 26 недель назад
10 лет 27 недель назад
10 лет 27 недель назад
10 лет 28 недель назад
10 лет 29 недель назад
10 лет 30 недель назад
10 лет 30 недель назад
10 лет 40 недель назад
10 лет 40 недель назад
10 лет 40 недель назад