2014-10-02 36 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