多数の相対データファイルがありますが、それらは約50 GBを占有し、別のマシンに転送する必要があります。これを行う最も効率的な方法を考えていました。
私が考えていたのは、すべてをgzipしてからrsyncして解凍し、圧縮のためにrsync -zに依存し、gzipしてからrsync -zを使用することでした。rsync -zがどのように正確に実装されているかわからないため、どれが最も効率的かはわかりません。どのオプションが最速かというアイデアはありますか?
多数の相対データファイルがありますが、それらは約50 GBを占有し、別のマシンに転送する必要があります。これを行う最も効率的な方法を考えていました。
私が考えていたのは、すべてをgzipしてからrsyncして解凍し、圧縮のためにrsync -zに依存し、gzipしてからrsync -zを使用することでした。rsync -zがどのように正確に実装されているかわからないため、どれが最も効率的かはわかりません。どのオプションが最速かというアイデアはありますか?
回答:
gzipは1つのファイルのみを圧縮するため、「すべてをgzipする」ことはできません。tarファイルを作成してgzipを「すべてをgzipする」ことができますが、変更されたファイルのみをコピーするrsync機能を失います。
質問は次のとおりです。gzipでrsyncする必要があるファイルを保存するか、rsyncの-zオプションに依存する方が良いでしょうか。
答えはおそらく、サーバー上でファイルを解凍したくないということでしょうか?はい、そうだと思いますので、rsyncを行う前にgzipファイルをどうやって管理できるかわかりません。
変更されたファイルのみをコピーするrsync機能は必要ないでしょうか?この場合、あなたのものを含むtar.gzファイルのscpを実行する代わりにrsyncを使用するのはなぜですか?
とにかく質問に答えるために、rsync gzipはgzipでファイルをgzipするよりも少し効率が悪くなります。どうして ?rsyncはチャンクごとにデータをgzip圧縮するので、圧縮を行うためにgzipが使用するテーブルを作成するために使用されるデータセットは小さくなり、データの大きなセット(gzipはファイル全体を一度に使用します)はより良い圧縮テーブルを提供します。しかし、ほとんどの場合、その差は非常に小さくなりますが、非常にまれなケースでは、差がより重要になることがあります(非常に長いparternがファイル上で多くの時間を繰り返すが互いに離れている非常に大きなファイルがある場合)(これは非常に単純化された例)
データを一度コピーするだけであれば、rsyncはそれだけで大きな勝利にはなりません。gzip(または多くのファイルがあるのでtar + gzip)が好きなら、次のようなものを試してみてください:
tar -cz /home/me/source/directory | ssh target tar -xz --directory /home/you/target/directory
これは、探している圧縮を取得し、rsyncを使用せずに直接コピーします。
@radiusは、どのようにgzip
機能するかを選択するための小さな方法です- gzip
ブロックベースの圧縮アルゴリズムであり、その点ではかなり単純なアルゴリズムです。ファイル全体は圧縮テーブルとは見なされず、各ブロックのみが考慮されます。他のアルゴリズムはファイルのコンテンツ全体を使用する場合があり、複数のブロックまたは可変サイズのブロックのコンテンツを使用するものがいくつかあります。興味深い例の1つはlrzip
、同じ著者によるものrsync
です!
したがって、要約すると、使用rsync -z
すると、最初にing と同じ圧縮が得られる可能性が高くなりgzip
ます-差分転送を行う場合は、の差分rsync
アルゴリズムにより優れています。
そうは言っても、非差分転送では通常のscp
ビートrsync
が便利だと思います- rsync
アルゴリズムのオーバーヘッド(scp
とにかく内部を使用します!)
ネットワークがボトルネックになっている場合は、回線上で圧縮を使用する必要があります。
あなたの場合はディスクがボトルネックにあり、圧縮されたファイルにストリーミングするだときには最高でしょう。(たとえば、netcat
あるマシンから次のマシンへ、にストリーミングgzip -c
)
通常、速度が重要な場合、既存のファイルを事前に圧縮することは無駄です。
TIMTOWTDI、YMMV、IANALなど
この男によると、使用する方が速いかもしれませんがrsync -z
、転送する前に各ファイルを最初に圧縮するのとほぼ同じくらい効率的だと思います。他の人が示唆するように、tarストリームを圧縮するよりも高速でなければなりません。
manページから:
Note that this option typically achieves better compression
ratios than can be achieved by using a compressing remote shell
or a compressing transport because it takes advantage of the
implicit information in the matching data blocks that are not
explicitly sent over the connection.
圧縮ファイルのscpとrsyncの転送時間は非常に似ているため、「これを行う最も効率的な方法」は、圧縮転送ではなくオンザフライ圧縮です。
「堅牢性」に加えて、次の考慮事項が含まれます。
すべてのファイルが転送されない場合、rsyncは簡単に再起動できます。
rsyncを使用して、リモートマシン上のファイルを管理できます。
ローカルtarまたはgzipにはローカルスペースが必要です。
ターゲットマシンとファイアウォールの両方のポート使用に関する考慮事項:1)scpは、許容できないポート22(デフォルト)を使用します。2)rsyncユーザーポート873(デフォルト)
なぜ元のポスターが解凍されたファイルを保存することを望まないのか、私は確信していません。