rsnapshot
多年来,我一直成功地使用来将我的 Ubuntu 笔记本电脑备份到我的 Ubuntu 服务器。最近,我决定改用sync_first
服务器上的选项和anacron
笔记本电脑上的作业,以获得更一致的备份,因为我的笔记本电脑并不总是开机。以防万一,我以前也每小时备份一次笔记本电脑,但当我尝试启用 时,我切换到每天备份一次sync_first
。我现在遇到了两个问题:
- 服务器上的日常运行都是移动
.sync
文件夹而不是复制它,导致每次从笔记本进行的同步都是完整备份 - 笔记本电脑上的 anacron 作业运行不稳定(似乎只在重启后第一次运行,但之后再也没有运行过)
以下是我的相关文件:
/etc/rsnapshot_josh-notebook.conf
(在服务器上)
config_version 1.2
snapshot_root /backups/rsnapshot/josh-notebook/
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /home/josh/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
cmd_postexec /usr/bin/rsync -az -P -H --numeric-ids --delete --rsync-path="sudo /rsync-3.1.1" --rsh="ssh -p 30535 -i /home/ssh_Backups/.ssh/id_rsa" /backups/rsnapshot/happycomputer/DaysA$
retain daily 7
retain weekly 4
retain monthly 12
retain yearly 10
verbose 2
loglevel 3
lockfile /var/run/rsnapshot.pid
rsync_short_args -azH
rsync_long_args --delete --numeric-ids --relative --delete-excluded --rsync-path="sudo /rsync-3.1.1"
ssh_args -p 30535 -i /home/ssh_Backups/.ssh/id_rsa
exclude *.log
exclude *.tmp
link_dest 1
sync_first 1
use_lazy_deletes 1
backup ssh_Backups@josh-notebook:/ ./
/etc/cron.d/rsnapshot
(在服务器上)
15 1 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot_josh-notebook.conf daily >> /backups/rsnapshot/_logs/rsnapshot_josh-notebook.log 2>&1
15 2 * * 0 root /usr/bin/rsnapshot -c /etc/rsnapshot_josh-notebook.conf weekly >> /backups/rsnapshot/_logs/rsnapshot_josh-notebook.log 2>&1
15 5 1 * * root /usr/bin/rsnapshot -c /etc/rsnapshot_josh-notebook.conf monthly >> /backups/rsnapshot/_logs/rsnapshot_josh-notebook.log 2>&1
15 8 1 1 * root /usr/bin/rsnapshot -c /etc/rsnapshot_josh-notebook.conf yearly >> /backups/rsnapshot/_logs/rsnapshot_josh-notebook.log 2>&1
/etc/anacrontab
(在笔记本上)
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# These replace cron's entries
1 5 cron.daily run-parts --report /etc/cron.daily
7 10 cron.weekly run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly run-parts --report /etc/cron.monthly
1 30 ssh_Backups sudo -u ssh_Backups ssh -p 30535 ssh_Backups@happycomputer "sudo /usr/bin/rsnapshot -c /etc/rsnapshot_josh-notebook.conf sync" >/tmp/ssh_Backups.errors 2>&1
当我sudo /usr/bin/rsnapshot -t -c /etc/rsnapshot_josh-notebook.conf daily
在服务器上运行时,它输出:
echo 5246 > /var/run/rsnapshot.pid
mv /backups/rsnapshot/josh-notebook/daily.4/ \
/backups/rsnapshot/josh-notebook/daily.5/
mv /backups/rsnapshot/josh-notebook/daily.3/ \
/backups/rsnapshot/josh-notebook/daily.4/
mv /backups/rsnapshot/josh-notebook/.sync/ \
/backups/rsnapshot/josh-notebook/daily.0/
根据一些谷歌搜索,我认为最后一行应该是cp -al
而不是mv
,这就是为什么我的 .sync 文件夹最终消失并且客户端每次运行时都必须进行完整备份。
你们当中有人能告诉我我的配置是否有问题吗?在启用之前sync_first
,它可以很好地进行备份……
答案1
删除 rsnapshot.conf 文件中的行“link_dest 1”可消除 rsnapshot 在 .sync 目录上执行 mv 而不是 cp -al 的问题,至少在我的版本中(OpenSuse 15.1 上的 rsnapshot 1.4.2)是这样。
由于我只备份数据文件,而不是系统文件,因此我在笔记本电脑和备份服务器上都使用自己的帐户运行 rsnapshot。在我的笔记本电脑上,我使用 kalarm 安排 rsync 到备份服务器,在备份服务器上,我使用 systemd 计时器。即文件 rsnapshot-“interval”.service 调用 rsnapshot“interval”和 rsnapshot-“interval”.timer 安排在 /etc/systemd/system 中为每个“间隔”(每日、每周、每月、每年)执行相应的 .service。一旦文件在那里,就必须执行以下操作:sudo systemctl enable rsnapshot-“interval”.timer 为每个“间隔”激活计时器