複数の .tar.gz アーカイブ内のファイルの重複を排除する

複数の .tar.gz アーカイブ内のファイルの重複を排除する

私は Web ホスティング サービスから .tar.gz として夜間バックアップを取っています。毎晩変更されるデータはごくわずかです (<10 MB)。

これらのファイルをアーカイブし、個々のバックアップ ファイルを抽出せずに、複数の .tar.gz アーカイブにわたってファイルを重複排除 (ソリッド圧縮) したいと思います。

簡略化された例:

2013-02-24.tar.gz含むa.pdf 2013-02-25.tar.gz含むa.pdfそしてb.pdf

一度だけ圧縮してアーカイブし2013-02-24.tar.gz2013-02-25.tar.gz保存したい。a.pdf

重複排除を機能させる唯一の方法は、両方の .tar.gz を解凍し、再度圧縮すること (ソリッド圧縮を使用) でした。ただし、これは 1 つの追加手順であり、OS が異なるため、ファイル システム情報が消去される可能性があります。両方の .tar.gz ファイルを単純に tar/gz しても機能しません。このアーカイブの最終的なサイズは、元の .tar.gz ファイルの両方の合計になります。

複数の .tar.gz ファイルの内容にわたって重複排除を使用する方法はありますか?

答え1

遅れて参加しましたが、要件は基本的に次のようになるようです。

  1. tarball ファイルの内容を重複排除する
  2. 元のgzipファイルを復元できる必要があります

最初は不可能に思えます。重複排除は一般的に、圧縮されていないファイルで作業できることに依存します。しかし、gunzip/gzipでまったく同じファイルが生成されると確信できる場合(テストした方が良いでしょう)、zバックアップは、実際には tarball の重複を排除するように設計されています。つまり、

  1. gunzip入手したtarball
  2. gziptarball を再度実行して、完全に一致していることを確認します (gzip 実装は同じであるはずですが、たとえば圧縮レベルが異なる可能性があるため、それを確認する必要が生じる場合があります)。
  3. tarballsをフィードするzbackup

答え2

あなたがしようとしていることは「簡単に」できるとは思えません

.tgz ファイルが十分に類似している場合は、xdelta を使用して最初のファイルを完全にバックアップし、最初のファイルと 2 番目のファイルの差分を含む xdelta を作成できる可能性があります。

代わりの部分的な解決策としては、非常に大きなファイル全体の圧縮を行うように設計された rzip (または lrzip ??) を使用することです。理想的ではありませんが、CPU とメモリを犠牲にして、現在使用しているものよりも大幅に小さくなる可能性があります。

答え3

私は同様の目的で squashfs を使用します:

mksquashfs dir1 dir2 dir3 backup_file.fs -keep-as-directory

答え4

素晴らしい解決これは、要求どおりに機能し、複数の TAR ファイル内のブロックの重複を排除します。これにより、変更されていないファイルが削除されるだけでなく、類似のファイルの変更された部分のみが保存されます。

ただし、これはクライアント/サーバー ソリューションであり、サーバーは有料です。ただし、重複排除機能により非常に手頃な価格で、暗号化が提供され、ファイルが安全に保存されます。

クライアントは通常の tar コードを使用するため、コマンドの使用は簡単です。

関連情報