動的に生成されたアーカイブの内容の比較

動的に生成されたアーカイブの内容の比較

短い質問:動的に生成された2つのtarアーカイブがあります(したがってタイムスタンプが異なります)。時間差を無視してどのように比較しますか?

背景...

私はスクリプトを使用してバックアップする必要がある項目を作成し、ディレクトリに配置し、そのディレクトリをtarしていくつかの以前のバージョンを保持するいくつかのバックアップを実行しています。作業時間が失われないようにするには、バックアップスクリプトを30分ごとに実行する必要があります。

これで、データが変更されない特定の期間があるため、同じコンテンツのコピーを繰り返し保存する必要がないことに気づきました。保存する前にアーカイブを比較したいです。私の試みは、新しいデータが含まれている場合にのみ実行してcmp newdata.tar.gz olddata.tar.gz保存することです。newdata.tar.gz明らかに、これはタイムスタンプが異なるため動作しません。

ベストアンサー1

これを行うには3つの方法があります。最初は私の好みです。

ファイル作成プロセスの変更

dump_table foo >foo.dump古いファイルが新しいファイルと同じ場合は、ファイルを無分別に再生成するのではなく古いファイルを保持します()。

dump_table foo >foo.dump.new
if cmp foo.dump foo.dump.new; then
  rm foo.dump.new
else
  mv foo.dump.new foo.dump
fi

ファイルをディレクトリにマウント

使用AVFS#すべてのアーカイブは、アーカイブの内容を保持しているように見える関連ディレクトリ(同じ名前、最後に追加)を含むディレクトリ階層全体のビューを作成します。

mountavfs
d=$(date -d %Y%m%d%H%M%S); mkdir $d; tar czf /path/to/$d.tgz $d; rmdir $d
cd /path/to/back/up
rsync -ac --compare-dest=~/.avfs/path/to/yesterday.tgz . ~/.avfs/path/to/$d.tgz

必要な機能を備えたバックアップツールを使用する

バックアップ手順は非常に安定している必要があります。国内ソリューションがすべての状況をカバーするのは難しいです。したがって、完全なバックアッププログラムを検討してください。私の考えでは二重性必要な作業を行います。増分バックアップを実行してrsyncアルゴリズムを使用するため、すでに存在するデータにスペースを無駄にしないでください。

おすすめ記事