rsync在首次运行时不使用delta传输

我试图同步一个大的本地目录(使用Cygwin,Windows 7 x64,30k文件,200GB大小的rsync 3.0.7的batch file)到远程服务器(Debian x64内核2.6,rsyncd 3.0.7)一个缓慢的互联网连接(90kbyte / s上传)。

我知道几乎所有的文件是相同的,我证实了本地和远程使用md5sum。

但是,从本地机器执行rsync时,每个文件都会首次被完全传输。 在几次传输后终止batch file并再次运行时,已经传输的文件将被跳过。 但是一旦它到达一个尚未被传输的文件,它就会重新上传整个文件,而不会注意到校验和在本地和远程都是一样的。

调用rsync的batch file看起来像这样(为了便于阅读,在这里添加了反斜杠和线路制动器):

c:\cygwin\bin\rsync.exe --verbose --human-readable --progress --stats \ --recursive --ignore-times --password-file pwd.txt \ /cygdrive/d/ftp/data/ \ rsync://[email protected]:33400/data/ | \ c:\cygwin\bin\tee.exe --append rsync.log 

我尝试了以不同的组合使用以下参数,但是这也没有帮助:

 --checksum --partial --partial-dir=/tmp/.rsync-partial --compress 

你有 – --ignore-times的意思。 有了这个选项,你将强迫它更新一切。

引用手册页:

  -I, --ignore-times Normally rsync will skip any files that are already the same size and have the same modification timestamp. This option turns off this "quick check" behavior, causing all files to be updated. 

如果两个目标上的文件没有相同的时间戳,则必须使用--checksum选项。 我build议在做完一次之后确保时间戳相匹配,以便将来可以使用快速检查。