为什么我的rsync脚本每次都进行完整备份?

时间:2012-05-31 09:18:14

标签: macos backup rsync

我创建了以下用于执行增量备份的rsync脚本:

rsync -arv --exclude-from '/usr/bin/exclude-list.txt' --delete /Volumes/DOCS/ /Volumes/BKUP1/DOCS/ 
&& rsync -arv --delete /Volumes/Webserver/ /Volumes/BKUP1/Webserver/

我的排除列表是

/Volumes/Webserver/.Spotlight-V100
/Volumes/Webserver/.Trashes
/Volumes/Webserver/.fseventsd

每次我运行此备份。尽管rsync应该是增量备份解决方案,但它似乎每次都会复制所有文件。

E.G。首先运行:

....
sites/website/sites/all/libraries/tinymce/jscripts/tiny_mce/plugins/style/js/.svn/prop-base/
sites/website/sites/all/libraries/tinymce/jscripts/tiny_mce/plugins/style/js/.svn/props/
sites/website/sites/all/libraries/tinymce/jscripts/tiny_mce/plugins/style/js/.svn/text-base/
....

第二轮:

....
sites/website/sites/all/libraries/tinymce/jscripts/tiny_mce/plugins/style/js/.svn/prop-base/
sites/website/sites/all/libraries/tinymce/jscripts/tiny_mce/plugins/style/js/.svn/props/
sites/website/sites/all/libraries/tinymce/jscripts/tiny_mce/plugins/style/js/.svn/text-base/
....
etc...

再次复制相同的文件。此外,我经常遇到以下权限被拒绝的错误,尽管在我的excude-from论证中它们被忽略了:

building file list ... rsync: opendir "/Volumes/Webserver/.Spotlight-V100" failed: Permission denied (13)
rsync: opendir "/Volumes/Webserver/.Trashes" failed: Permission denied (13)
rsync: opendir "/Volumes/Webserver/.fseventsd" failed: Permission denied (13)

有什么想法吗?我希望我可以调整这个脚本,这样它只能复制修改后的/新文件,并向我显示这些文件在详细输出中的内容。

非常感谢先进。

2 个答案:

答案 0 :(得分:2)

我亲自跑到这里去了。我能想到的最好的,就像这听起来一样愚蠢,就是文件的时间戳没有被保留。然后,当你再次这样做时,它会认为“嘿!这些时间戳不匹配 - 更好地同步它们!”如果你使用-t选项,它将发送时间戳,然后文件将被视为相同

或者您可以使用“仅限尺寸”选项,如果您确定没有文件已修改但尺寸相同,则可以执行听起来的操作。

答案 1 :(得分:1)

您是否从格式不同的驱动器复制到FAT32驱动器?我的理解是FAT32保留了16位时间戳,只允许大约两秒的分辨率,这远远不如其他驱动器格式精确。默认情况下,rsync要求时间戳完全匹配,因此几乎每个文件都将无法通过此测试并进行重新复制。

要解决此问题,您需要让rsync从源中传递时间戳+/- 1秒(总计2秒)的文件。您可以通过添加

来完成此操作
--modify-window=1 

到rsync命令。