私はこれに少し戸惑っていますか? rsyncがscpより速いのはなぜですか? rsyncは下のscpを使用していませんか、それともより効率的なものですか? scpを高速化する方法はありますか?
Rsyncは差分のみをコピーするため、ターゲットにすでにソースファイルの一部が含まれている場合、rsyncはscpよりも明らかに高速です。しかし、私はあなたの質問が空のターゲットに簡単なコピーをすることについてだったと思います。
-z
オプションをrsync
に渡しました。これにより圧縮がオンになります。ネットワーク帯域幅が制限要因である場合(多くの場合そうです)、圧縮により転送速度が著しく向上します。
-C
オプションを渡すことにより、scp
で圧縮を有効にすることもできます。これは、rsyncを使用した場合でもほぼ同じです。圧縮は帯域幅を節約しますが待ち時間とCPUオーバーヘッドを追加するため、sshではデフォルトで有効になっていません。インタラクティブセッションではレイテンシが悪く(これはscp
には当てはまりません)、コピーするファイルがすでに圧縮されている場合、CPUオーバーヘッドは役に立ちません。
rsync
の古いバージョンでは、デフォルトのトランスポート層としてsshではなくrshを使用していたため、rsync
とrcp
は公平に比較されます。しかし、sshは2004-01-01にリリースされた2.6.0以降のデフォルトです。
同一の圧縮設定では、rsync
とscp
は本質的に同じ速度になると思います。それ以外の場合はベンチマークを共有してください。
scpを高速に試す
scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput' -c arcfour machine:file .
これらのオプションは、単純なscp machine:fileと比較して、私のセットアップでscpを5倍高速化します。
2017年更新
実際には、TCP MTUやバッファーサイズなどの詳細の管理が不十分なため、scpは遅くなります。幸い、これは HPN SSH プロジェクトによって修正されています。 rsyncのトランスポートとしてHPN SSHを使用します。
以前は逆でしたが、rsyncの速度は過去のいくつかのリビジョンで大幅に改善されたと思います。また、コピーするファイルの数によっても異なります。大量の場合、コピーするファイルごとにscpが新しいプロセスを生成するため、rsyncは通常より高速になります。 scpが使用する暗号を弱めて、速度が上がるかどうかを確認できます。最後に思い出したのは、arcfour暗号が最速だったことです。
小さなファイルが多数ある場合、rysncはscpよりもはるかに高速です。オーバーヘッドが小さいからだと彼らは言う。 1つの大きなファイルの場合、同様の結果が期待されます。
私のテストでは、rsyncはscpより高速です。同じファイルの転送時にiotopを使用してテストできます。
Sudo iotop -o
異なる結果が得られるかもしれませんが、自分でテストできます。ところで、scpを使用している間は、次の方法で暗号を選択する必要があります。
scp -c arcfour <source> <dest>
arcfour
は暗号化を高速化できます。
既存のファイルの上にファイルを再コピーしていますか?その場合、比較をブロックし、違いのみをコピーするrsyncの機能が関係します。