Серверов много, информация критична, что делать? Распространенный вопрос среди администраторов 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 лет 50 недель назад
10 лет 51 неделя назад
10 лет 51 неделя назад
11 лет 2 часа назад
11 лет 1 неделя назад
11 лет 2 недели назад
11 лет 2 недели назад
11 лет 12 недель назад
11 лет 12 недель назад
11 лет 12 недель назад