为什么带有 sync_first 的 rsnapshot 不能正常工作?

为什么带有 sync_first 的 rsnapshot 不能正常工作?

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 为每个“间隔”激活计时器

相关内容