几年来我一直通过 rsync 对远程计算机进行备份。至少在过去的两个月里,rsync已经停止检测要备份的机器上的新文件和目录。脚本的输出表明文件和目录是最新的,即使它们足够新,不存在于远程计算机上的任何版本中!
#!/bin/sh
#
# MAKE SURE HAVE CORRECT REMOTE/AT-HOME LOGIN SETUP AND THAT TARGET IS TOTEMDOC and source is Documents
#
rsync -azvv -e "ssh -o CheckHostIP=no -i /home/stefan/.ssh/id_rsa" /home/stefan/Documents remoteUser@MouseHouse:/totembackup/totemdoc
输出:
opening connection using: ssh -o CheckHostIP=no -i /home/stefan/.ssh/id_rsa -l totem MouseHouse rsync --server -vvlogDtprze.iLsfxC . /totembackup/totemdoc (13 args)
sending incremental file list
delta-transmission enabled
然后是每个文件都是最新的列表,然后是结论:
total: matches=0 hash_hits=0 false_alarms=0 data=0
sent 407,686 bytes received 794,633 bytes 801,546.00 bytes/sec
出了什么问题?为什么 rsync 无法检测文件的更改,甚至无法检测新创建的文件?
答案1
事实证明我的脚本中有一个不相关的愚蠢错误。这些文件一直都是最新的,脚本只是没有将它们复制到我认为的位置。
在修改脚本的某个时刻,我一定不小心删除了源路径中的尾部斜杠。这意味着脚本将行为从复制到更改/totembackup/totemdoc
为复制到/totembackup/totemdoc/Documents
。Documents
在浏览/totembackup/totemdoc
以检查备份是否正常工作时,我从未注意到这个新目录。
恢复源路径/home/stefan/Documents/
(注意尾部斜杠)使脚本的行为恢复到我的预期。