rsnapshot

Для начала на бэкап-сервере создается отдельный пользователь с --home=/path/to/backups, от его имени с помощью ssh-keygen генерируется private- и public-ключи. Первый остается на сервере, публичный копируется в /root/.ssh и на удаленную машину:
cat /mnt/backup/.ssh/id_dsa.pub | ssh backup@domainname.ru "cat >> ~/.ssh/authorized_keys2"
Не забыть выставить chmod 700 .ssh && chmod 400 .ssh/authorized_keys2 на клиенте. По дефолту у обычного пользователя нет прав копировать /etc/ и прочее, поэтому пользователю backup нужно дать доступ к rsync, с помощью которого rsnapshot синхронизирует снимки. В /etc/sudoers добавляется:
backup ALL=NOPASSWD: /usr/bin/rsync
backup ALL=NOPASSWD: /usr/bin/rsync_original
Обертка необходима потому, что при указании в rsnapshot.conf опции rsync_long_args --rsync-path="/usr/bin/sudo /usr/bin/rsync" она вообще не может понять чего от нее хотят — отсюда и велосипед с враппером /usr/bin/sudo /usr/bin/rsync_original $@
Примерный rsnapshot.conf (не забывать про таб между опцией и значением):
srv:~# grep -v -e "^#" /etc/rsnapshot.conf | sed '/^$/d'
config_version 1.2
snapshot_root /mnt/nas/backup/

cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger

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

verbose 2
loglevel 3
logfile /var/log/rsnapshot

lockfile /var/run/rsnapshot.pid

exclude /dev
exclude /proc
exclude /sys
exclude /mnt
exclude /var/cache/apt
exclude /usr/src
exclude /home/ftp

exclude /usr/ports
exclude /usr/local/squid
exclude /usr/obj

exclude /home/user/.cache/google-chrome
exclude /home/user/.config/google-chrome
exclude /home/user/.opera
exclude /home/user/.mozilla
exclude /home/user/.macromedia
exclude /home/user/.wine

# srv0
backup / srv0.domainname.ru/
backup /boot/ srv0.domainname.ru/
backup /var/ srv0.domainname.ru/
backup /home/ srv0.domainname.ru/

# srv1
backup backup@srv1.domainname.ru:/ srv1.domainname.ru/
backup backup@srv1.domainname.ru:/usr/ srv1.domainname.ru/
backup backup@srv1.domainname.ru:/var/ srv1.domainname.ru/
backup backup@srv1.domainname.ru:/home/ srv1.domainname.ru/

# user1
backup backup@user.domainname.ru:/ srv3.domainname.ru/
backup backup@user.domainname.ru:/boot/ srv3.domainname.ru/
backup backup@user.domainname.ru:/home/ srv3.domainname.ru/
Сказать крону когда запускать rsnapshot (интервалы должны соответствовать тому, чтобы перед выполнением следующей задачи успевала отрабатывать предыдущая):
srv:~# cat /etc/crontab | grep rsnap
0 */4 * * * root /usr/bin/rsnapshot hourly
40 23 * * * root /usr/bin/rsnapshot daily
20 23 * * 0 root /usr/bin/rsnapshot weekly
00 23 1 * * root /usr/bin/rsnapshot monthly

No comments:

Post a Comment