Rsnapshot — утилита для создания копий состояния файловых систем на базе rsync. Она упрощает создание периодических копий с локальной и удаленных машин по ssh. Создает полные снапшотов содержимого файловой системы через заданный интервал времени. Особенность rsnapshot — использование инкрементного копирования, существенно экономящего время выполнения и место, занимаемое для снапшотов.
Чтобы экономить место на диске, файлы, которые не изменились с момента первого бэкапа, линкуются как hard link.
Rsnapshot написан на языке Perl и использует в своей работе утилиту rsync. Может запускаться в работу как вручную, так и по планировщику cron.
Вступление
1. Разделителем между полями должен быть символ табуляции, а не пробел
2. Каталоги должны оканчиваться слешем (/store/ — корректно, /store – не корректно)
3. Есть возможно исключить как каталоги, так и файлы
4. Проверка синтаксиса конфигурационного файла /etc/rsnapshot.conf — rsnapshot configtest
Мой конфигурационный файл
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
cat /etc/rsnapshot.conf | egrep -v '(#|^$)' config_version 1.2 snapshot_root /opt/backup/volume1/projects/ cmd_cp /usr/bin/cp cmd_rm /usr/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 retain daily 6 retain monthly 7 retain weekly 4 verbose 2 loglevel 3 logfile /home/remotebackup/rsnapshot lockfile /home/remotebackup/rsnapshot.pid stop_on_stale_lockfile 0 rsync_short_args -azl rsync_long_args --delete --numeric-ids --relative --delete-excluded du_args -csh rsync_numtries 10 backup remotebackup@10.128.152.1:/projects/files projects/ backup remotebackup@10.128.152.1:/www projects/ |
Так как я выполняю копирование по SSH, то выполняю задание от имени remotebackup, которому разрешено в файле sudoers выполнение файла. Как изготовить ключи и настроить авторизацию по ключу, написано тут
1 2 3 |
remotebackup ALL = (root) NOPASSWD: localhost=/usr/bin/rsnapshot |
После проверки файла конфигурации
1 2 3 |
<span class="crayon-p">rsnapshot configtest</span> |
Тестовый запуск
1 2 3 |
rsnapshot -t daily |
После проверки каждого задания можно поместить их в cron. Для того, чтобы задание не пересекались, необходимо разнести их по времени и добавить настройку lockfile, в файле конфигурации. Все статистики по передаче файлов я отключил, так как слишком большой объем. При попытке запуска нескольких заданий одновременно:
1 2 3 4 5 6 7 8 |
sudo -u remotebackup /usr/bin/rsnapshot weekly ---------------------------------------------------------------------------- rsnapshot encountered an error! The program was invoked with these options: /usr/bin/rsnapshot weekly ---------------------------------------------------------------------------- ERROR: Lockfile /home/remotebackup/rsnapshot.pid exists and so does its process, can not continue |
CRON
1 2 3 4 5 |
45 20 * * * root sudo -u remotebackup /usr/bin/rsnapshot daily 35 20 * * 7 root sudo -u remotebackup /usr/bin/rsnapshot weekly #15 20 2 1 * * root sudo -u remotebackup /usr/bin/rsnapshot monthly |
ВАЖНО: используйте табы, а не пробелы между параметрами.