我正在使用 rsync(与 Cygwin 一起)同步 2 个本地文件夹。这些文件夹包含二进制文件。
我正在使用以下命令:
rsync.exe -av dir1/ dir2/
但dir2中的文件仅部分更新,几乎没有不同的文件。
有人知道 Windows 上的 rsync 存在问题吗?我应该使用其他标志吗?
答案1
这是一个猜测:可能是时间分辨率不够大,文件不同,但它们的时间戳落在同一秒内且长度相同,因此 rsync 无法区分它们并跳过它们,认为它们是相同的。该选项--ignore-times
在这种情况下可能会有所帮助,因为这将强制 rsync 检查文件内容,而不仅仅是文件大小和时间戳。
的另一种替代方法--ignore-times
是--checksum
,它将强制 rsync 对每个文件进行校验,并保证之后的目录完全相同,但是它会使速度稍微变慢,特别是在大型文件层次结构中。
另一个更常见的问题可能是硬件、RAM、硬盘或其他任何导致文件复制错误的因素,我已经看到这种情况发生过很多次了。要检查这个问题,请使用内存检查器,memtest86+
并将相同的目录结构重复复制到不同的目标目录并比较结果,如果每次结果都不同,则说明有问题。
答案2
Rsync 功能强大且聪明,但您需要准确了解要求它做什么,这意味着您需要阅读整个手册三遍。您的使用方法看起来很简单,但很多事情其实并不简单。
是的,--whole-file 是 local-local rsync 的默认设置。