Rsync は、ソースとターゲットの差よりも多くのデータを送信します。なぜですか?

Rsync は、ソースとターゲットの差よりも多くのデータを送信します。なぜですか?

rsyncを使用して、ソースコンピュータC1からターゲットコンピュータD1(同じLANにない)にファイルを転送しています。 C1(ソース)のファイルAは、D1(ターゲット)のファイルBの更新版です。ファイルAは850MB、ファイルBは530MBです。

使用されたコマンド:

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のデルタアルゴリズムによれば、送信されたすべてのデータを結合するためのチェックサムと命令のための追加のバイトと一緒に320MBの差だけを送信する必要があります。しかし、合計590mbが送信されました。 270MBをさらに転送するのはなぜですか?

rsyncコマンドまたはチェックサムに渡される追加データは、この追加データを送信しますか?それとも320MBの違いに加えて、ファイルAから追加データが転送されていますか?つまり、この場合、デルタアルゴリズムがそれほど効率的ではないという意味ですか?

ベストアンサー1

更新されたアーカイブを転送中ですtar。保存先の以前のコピーは約530 Mbで、更新されたファイルは約850 Mbです。違いサイズに関して320Mbですが、転送する必要があるファイルの最初の530Mbにも違いがあるとします。

更新されたアーカイブにアイテムのみがある場合追加もしそうなら、あなたの懸念は正しいです。ただし、アーカイブを再作成すると、更新されたアーカイブの最初の530 Mbに2つのファイルが異なる順序で追加されるか、アーカイブに追加されたデータは実際にはより長いサイズで追加されます。小さなファイルは全体に配布されます。rsync変更も検出されるようにアーカイブします。

おすすめ記事