圧縮してrsyncを実行した後のファイルの復元

圧縮してrsyncを実行した後のファイルの復元

圧縮とアーカイブのために、引数 -z と -a を使用して rsync を実行できることは理解しています。

これらのオプションを使用すると、バックアップされているファイルを元のフォルダーに復元する必要がある場合に、ファイルに何らかの影響が出るかどうかを教えてください。

rsync -avz を実行した後、メディア ファイルのサンプルをコピーし直しましたが、正常に動作しているようですが、確認したかったのです。

ありがとう

答え1

これらのオプションを使用すると、バックアップされているファイルを元のフォルダーに復元する必要がある場合に、ファイルに何らかの影響が出るかどうかを教えてください。

いいえ、この-zスイッチはターゲットの場所に書き込まれたデータにはまったく影響しません。-aより忠実なコピーを確実に作成するためのものです。詳細については、以下をお読みください...


rsync のマニュアル ページでは、-z( --compress) スイッチについて次のように説明されています。

-z--compress転送中にファイルデータを圧縮する

(は、-a転送終了後にターゲットの位置データがソースの位置データとすべての点で同一であることを保証するスイッチを有効にする単なる省略形です。これはファイルのメタデータには影響しますが、ファイルの内容には影響しません。コンテンツコピーされたファイルは、使用した-aかどうかに関係なく同じになります。

の説明には-z圧縮と書かれていることに注意してください移転中そこが重要な部分ですが、ある程度の背景知識がないと理解しにくいかもしれません。

まず、rsyncはローカル転送でもクライアント/サーバーアーキテクチャを使用しているという事実です。一方がソースの場所からデータを読み取り、もう一方がターゲットの場所に書き込みます。この2つの間にはネットワーク接続がある場合もあれば、同じホスト上で実行されている場合もあります。このアーキテクチャにより、rsyncはローカルでのコピーでもネットワーク経由でのコピーでもまったく同じプロトコルと基本的に同じ実装を使用できます。変更が必要なのは、実際にrsyncインスタンス間でデータを転送します

スループットがネットワークスループットによって制限される場合、またはネットワークデータの転送量に応じて課金される場合、そしておそらくソースシステムとターゲットシステムに空きCPU時間があるそれからネットワークを流れるデータ ストリームを圧縮すると、ネットワークを流れるデータ量が少なくなる代わりに CPU 時間が追加されるため、コピー処理がより早く完了する (またはコストが削減される) 可能性があります。

ターゲットの rsync プロセスは、データを解凍してからさらに処理し、最終的にストレージに書き込みます。

このことから、rsyncを使用してローカルにファイルをコピーするときに圧縮をオンにすると、基本的にCPU時間が無駄になります。関係する 2 つの rsync インスタンス間の接続は、関係する他のどの I/O よりもずっと高速であり、同じ CPU がデータ ストリームの圧縮と解凍の両方を実行するためです。このような場合、キャッシュをしばらく無視すると、データはディスク (低速) から RAM に読み込まれ、RAM 内でコピーされ (高速)、その後再びディスクに書き出されます (低速)。低速コンポーネントが支配的になり、RAM 内でコピーするデータが少なくなっても、プロセスの速度が大幅に向上することはありません (必要な追加処理が原因で、RAM 内でのデータ コピーが必要になる可能性が非常に高いため、速度が低下する可能性があります)。本当に運が悪いと、圧縮を有効にすると、メモリに必要なすべてのデータを収めるためにスワップ領域を使用する必要がある制限を超えてしまいます。殺すパフォーマンス。

最近の一般的なRAMは、何ギガバイト/秒もの転送を難なくこなすことができます。7200rpmの回転ディスクドライブは、シーケンシャル操作で120~150MB/秒程度が上限で、ランダムファイルI/O(rsyncによるもの)は、短時間のバースト以外はシーケンシャルになることはほとんどありません。SSDはレイテンシとスループットの両方で優れていますが、それでも桁違いRAMより遅いしたがって、ローカルにコピーする場合、常にI/Oバウンドとなり、転送中のデータストリームを圧縮するせいぜい違いはない同じ量のデータが依然として読み取られ、書き込まれるため、これは前述のようにプロセスの遅い部分です。

関連情報