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
変更も検出されるようにアーカイブします。