私は 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.gz
、2013-02-25.tar.gz
保存したい。a.pdf
重複排除を機能させる唯一の方法は、両方の .tar.gz を解凍し、再度圧縮すること (ソリッド圧縮を使用) でした。ただし、これは 1 つの追加手順であり、OS が異なるため、ファイル システム情報が消去される可能性があります。両方の .tar.gz ファイルを単純に tar/gz しても機能しません。このアーカイブの最終的なサイズは、元の .tar.gz ファイルの両方の合計になります。
複数の .tar.gz ファイルの内容にわたって重複排除を使用する方法はありますか?
答え1
遅れて参加しましたが、要件は基本的に次のようになるようです。
- tarball ファイルの内容を重複排除する
- 元のgzipファイルを復元できる必要があります
最初は不可能に思えます。重複排除は一般的に、圧縮されていないファイルで作業できることに依存します。しかし、gunzip/gzipでまったく同じファイルが生成されると確信できる場合(テストした方が良いでしょう)、zバックアップは、実際には tarball の重複を排除するように設計されています。つまり、
gunzip
入手したtarballgzip
tarball を再度実行して、完全に一致していることを確認します (gzip 実装は同じであるはずですが、たとえば圧縮レベルが異なる可能性があるため、それを確認する必要が生じる場合があります)。- 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 コードを使用するため、コマンドの使用は簡単です。