私は常にリモートコンピュータからリモートコンピュータにファイルをコピーまたは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サーバーとクライアント間の対話型通信があるためです(タイムスタンプや権限などのファイルメタデータ交換用)。したがって、両側は相手から応答を受けるまでしばらく待たなければなりません(待っている間圧縮は役に立ちません)。これはファイルを転送するたびに時間の無駄です。無駄な時間は、接続待ち時間によって異なります。最終的に、転送速度ははるかに遅くなる可能性があります。
この通信は、単一の圧縮ファイルを転送するときに一度だけ発生します。