我相信我的rsync每次都会传输整个文件,而不是使用其算法,只传输更改。这是为什么?
我有一个名为rsynctest的文本文件。即使我只删除服务器端文本文件中的单个字符,它似乎也在传输整个文件。 rsync统计信息显示:传输的文件总大小为2.55G,文件大小为2.4G,因此我认为它传输了整个文件。
这是输出
/usr/bin/rsync -avrh --progress --compress --stats rsynctest x.x.x.x:/rsynctest
sending incremental file list
test
2.55G 100% 27.56MB/s 0:01:28 (xfer#1, to-check=0/1)
Number of files: 1
Number of files transferred: 1
Total file size: 2.55G bytes
Total transferred file size: 2.55G bytes
Literal data: 50.53K bytes
Matched data: 2.55G bytes
File list size: 39
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 693
Total bytes received: 404.38K
sent 693 bytes received 404.38K bytes 2.54K bytes/sec
total size is 2.55G speedup is 6305.64
答案 0 :(得分:1)
它实际上并没有传输整个文件。查看“发送的总字节数”和“接收的总字节数”行。它只传输N个字节的每个块的校验和(其中N可以变化),并且当给定块的校验和结果相同时,不传输该块。但由于文件大小已更改,因此必须检查整个文件的差异。这就是你在进度条中看到的:rsync检查整个文件的差异。 (另请注意,速度为27.56MB / s - 我怀疑你的互联网连接实际上可以保持每秒百分之四十的传输速度。虽然它可以,但对你来说更有力量。)