Rsync 传输的数据比源和目标之间的差异多,为什么?

Rsync 传输的数据比源和目标之间的差异多,为什么?

我正在使用 rsync 将文件从源计算机 C1 传输到目标计算机 D1 [不在同一局域网内]。 C1(源)中的文件 A 是 D1(目标)中的文件 B 的更新版本。文件 A 为 850 mb,文件 B 为 530 mb。

使用的命令:

rsync -e "ssh -p 2222 -o StrictHostKeyChecking=no -o ConnectTimeout=10" -avvvz --stats --progress fileA.tar username@destIP:fileB.tar

以下是获得的统计数据:

 hash search b=25600 len=899737600  
 Number of files: 1  
 Number of files transferred: 1 
 Total file size: 899737600 bytes 
 Total transferred file size: 899737600 bytes 
 Literal data: 709324800 bytes 
 Matched data: 190412800 bytes       
 File list size: 38 
 File list generation time: 0.001 seconds 
 File list transfer time: 0.000 seconds  
 Total bytes sent: 617865859  
 Total bytes received: 153142     
 sent 617865859 bytes  received 153142 bytes  3501524.08 bytes/sec     
 total size is 899737600  speedup is 1.46
 data sent - 617865859 bytes (590mb approx)

根据 rsync 的 delta 算法,仅应传输 320 mb 的差异以及用于校验和的额外字节以及将所有传输的数据组合在一起的指令。但总共传输了 590mb。为什么要额外传输 270mb?

这个额外的数据传输是因为额外的数据作为 rsync 指令或校验和传递,还是除了 320mb 的差异之外还从文件 A 传输了额外的数据 - 这意味着在这种情况下 delta 算法不是很有效?

答案1

您正在传输更新的tar存档。目标位置的旧副本约为 530 Mb,更新后的文件约为 850 Mb。区别在尺寸方面是 320 Mb,但我假设必须传输的文件的前 530 Mb 也存在差异。

如果更新的存档只有东西附加的对此,那么您的担忧是正确的,但如果您重新创建存档,则只需以不同的顺序添加更新存档的前 530 Mb 中的两个文件,或者添加到存档中的数据是实际上以较小的文件分布在整个存档中,以便rsync也检测那里的更改。

相关内容