
私は常にリモートコンピュータからリモートコンピュータにファイルをコピーまたはrsync
使用します。最近のマニュアルで()フラグをscp
見つけました。scp
man scp
-C
-C Compression enable. Passes the -C flag to
ssh(1) to enable compression.
zip
このフラグを見つける前に、beforeとthenを使用しましたscp
。
-C
圧縮と解凍を使用する方が効率的ですか?あるプロセスまたは別のプロセスを使用すると、いつ転送が速くなりますか?
答え1
この-C
フラグはSSHストリームのgzip圧縮を有効にします。
これはAccept-Encoding: gzip
HTTPと同じです。
このフラグの実装方法は、送信するデータの種類によって異なります。
1つの大容量ファイルを転送する場合、パフォーマンスは転送前にファイルを圧縮するのとほぼ同じです(zipおよびgzipアルゴリズムの効率を無視する)。
しかし、
-C
ユーザーにとっては、使用する方がより労力を節約できます。多数の小さなファイルを転送する場合、転送する前にファイルを圧縮するよりもパフォーマンスが悪くなります。
その理由は、各ファイルを転送する前にSCPサーバーとクライアント間の対話型通信があるためです(タイムスタンプや権限などのファイルメタデータ交換用)。したがって、両側は相手から応答を受けるまでしばらく待たなければなりません(待っている間圧縮は役に立ちません)。これはファイルを転送するたびに時間の無駄です。無駄な時間は、接続待ち時間によって異なります。最終的に、転送速度ははるかに遅くなる可能性があります。
この通信は、単一の圧縮ファイルを転送するときに一度だけ発生します。
答え2
実際に大きな違いを作ることはできませんが、ファイルをコピーする前に圧縮すると、Stream zipの入出力などの複数のzip
ファイルをカプセル化できますtar
gzip
一方、代わりに使用することは、内部的に行うこととまったくzip
同じでなければなりません... gzip自体が 。ssh -C
ssh -C
答え3
SSH(SCPの下)でgzip圧縮を有効にします。
存在する遅いこれにより接続速度が速くなり、合理的に高速接続(100Mbit以上)では圧縮により速度が遅くなる可能性が高くなります。
gzip(特にgzip -6)が選択したzip圧縮レベルよりも効率的かどうかによって、zipよりも効率が高くまたは低くなります。