2014-10-02 13 views
0

我相信我的rsync每次都在传输整个文件,而不是使用它的算法,只传输更改。为什么是这样?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

这不是实际传输整个文件。查看“发送的总字节数”和“总字节数”行。它只传送每个N字节块的校验和(其中N可以变化),并且当给定块的校验和相同时,该块不被传送。但由于文件大小发生了变化,所以必须检查整个文件的差异。这就是你在进度条中看到的:rsync检查整个文件的差异。 (请注意27.56MB/s的速度 - 我怀疑你的互联网连接实际上可以保持每秒百兆的传输速度,尽管如果它可以,给你更多的功率)

+0

此外,“加速是6305.64“这一行意味着如果rsync操作必须传输整个文件,那么rsync操作会花费6305.64倍的时间。该数字的计算方法是,请求rsync同步的数据总大小除以实际传输的字节数。由此产生的比例是rsync的加速“分数”。 – rmunn 2014-10-03 06:17:52