2

我创建了以下 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 应该是增量备份解决方案,但它似乎每次都会遍历并复制所有文件。

EG 第一次运行:

....
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...

再次复制相同的文件。此外,我经常遇到以下权限被拒绝错误,尽管它们在我的排除参数中被忽略:

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)

有任何想法吗?我希望我可以调整这个脚本,所以它只会复制修改过的/新文件,并告诉我这些文件在详细输出中是什么文件。

非常感谢。

4

2 回答 2

2

我自己也遇到了这个。尽管这听起来很愚蠢,但我能想到的最好的办法是文件的时间戳没有被保留。然后,当您再次执行此操作时,它会认为“嘿!这些时间戳不匹配 - 更好地同步它们!” 如果您使用 -t 选项,它将发送时间戳,然后文件将被视为相同

或者,您可以使用“仅大小”选项,如果您确定没有您修改过但大小相同的文件,这听起来很像。

于 2012-06-05T16:21:25.963 回答
1

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

要解决此问题,您需要让 rsync 从源传递时间戳为 +/-1 秒(总范围为 2 秒)的文件。你通过添加来做到这一点

--modify-window=1 

到 rsync 命令。

于 2013-04-10T11:49:05.977 回答