すでに圧縮されたファイルをrsyncする

すでに圧縮されたファイルをrsyncする

入力ファイルがすでに gzip 圧縮されている場合、rysnc -z には圧縮の利点がありますか? 100 GB の大きな圧縮ファイルをネットワーク経由でサーバー間で送信するのですが、さまざまな時間が経過すると常に失敗します (パイプが壊れる)。-z フラグを試してみるべきかどうか迷っています。

答え1

すでに圧縮されているファイルを転送中に圧縮することは、通常、CPU 時間を無駄にすることになります。ただし、注意点があります。2 つのファイルを比較するプロセスで、圧縮付きの rsync を使用すると、データのハッシュの比較が高速化されます。

複数のシステムで大きなファイルの圧縮バージョンのみを同期したい場合は、特定の gzip ビルドを調べるとよいでしょう。Ubuntu システムでは、次のようになります。

$ gzip -h
使用法: gzip [オプション]... [ファイル]...
ファイルを圧縮または解凍します (デフォルトでは、ファイルをインプレースで圧縮します)。

長いオプションの必須引数は、短いオプションでも必須です。

  -c, --stdout 標準出力に書き込み、元のファイルは変更しない
  -d, --decompress 解凍
  -f, --force 出力ファイルを強制的に上書きし、リンクを圧縮します
  -h, --help このヘルプを表示する
  -l, --list 圧縮ファイルの内容をリストする
  -L, --license ソフトウェアライセンスを表示
  -n, --no-name 元の名前とタイムスタンプを保存または復元しません
  -N, --name 元の名前とタイムスタンプを保存または復元します
  -q, --quiet すべての警告を抑制します
  -r, --recursive ディレクトリを再帰的に操作します
  -S, --suffix=SUF 圧縮ファイルにサフィックス SUF を使用する
  -t, --test 圧縮ファイルの整合性をテストする
  -v, --verbose 詳細モード
  -V, --version バージョン番号を表示
  -1、--fast 圧縮速度が速い
  -9、--圧縮率が高いほど良い
    --rsyncable rsync対応のアーカイブを作成する

FILE がない場合、または FILE が - の場合は、標準入力を読み取ります。

バグは まで報告してください。

この--rsyncableオプションに気付きましたか? このオプションは、適応型圧縮の使用を回避し、ソース ファイルに小さな変更があった場合に圧縮ファイルの小さな部分のみが変更されるようにします。バイナリ データの残りの部分は変更されないため、rsync は全体を再送信する必要がありません。man ページには、このオプションを使用すると、オプションを使用しない場合と比較して、圧縮ファイルのサイズが約 1% 以上増加することはなく、gunzip はその違いを認識しないことが示されています。

468MB の SQL ファイルがあり、これをオプションで 57MB に圧縮しました--rsyncable。このファイルをローカル システムに転送します。次に、リモート システム上の元の SQL ファイルに 1 行のコメントを追加し、rsyncable オプションで再圧縮します。

rsync -avvz --progress -h fooboo:foo.sql.gz を実行します。
ssh fooboo rsync --server --sender -vvlogDtprz を使用して接続を開きます。foo.sql.gz
ファイルリストを受信して​​います...
検討すべきファイル 1 件
デルタ伝送が有効
foo.sql.gz
      59.64M 100% 43.22MB/秒 0:00:01 (xfer#1、to-check=0/1)
合計: 一致=7723 ハッシュヒット=9468 偽アラーム=0 データ=22366

送信 54.12K バイト 受信 22.58K バイト 17.05K バイト/秒
合計サイズは59.64M、スピードアップは777.59

悪くないですね。Rsync は、新しい圧縮ファイルのほんの一部を転送するだけで済みました。

答え2

rsync は、転送中にすでに圧縮されたファイルを大幅に小さくすることはありません。

-z フラグを追加しても、失敗した転送が修正されることはまずありません。圧縮されていないファイルを rsync してみることをお勧めします。rsync は、その場で圧縮します。こうすると、ソース ファイルが変更されて再度 rsync が必要になった場合でも、変更されたバイトだけが転送されるという利点があります。圧縮されたファイルを変更すると、rsync はおそらくそのファイルを完全に再送信する必要があります。詳細については、こちらを参照してください。

http://beeznest.wordpress.com/2005/02/03/rsyncable-gzip/

答え3

適切な圧縮形式を使用してすでに圧縮されているファイルを扱う場合、 を使用するrsync -zことで得られる利点はありませんrsync。ただし、圧縮されたファイルを小さな部分に分割して、rsync を使用して転送することを検討してください。

Linux のガイドは次のとおりです:http://www.techiecorner.com/107/how-to-split-large-file-into-several-smaller-files-linux/ Windows の場合:http://www.online-tech-tips.com/computer-tips/how-to-split-a-large-file-into-multiple-smaller-pieces/

関連情報