web-dev-qa-db-ja.com

変更されたファイルでのみtar.gzを毎日更新する

重複の可能性:
既存のtar.gzアーカイブにファイルを追加/更新しますか?

毎日更新したいゲームファイルがいくつかあり、それらはフォルダーのtar.gzを作成しますが、毎日すべてのファイルの完全なtar.gzを作成する代わりに、チェックする方法を見つけようとしています。ファイルのディレクトリが変更/追加/削除され、アーカイブを更新して、アーカイブを毎日最初から再作成するのではなく、時間とCPUを節約します。これどうやってするの?

私はこれまで運がなかった--listed-incrementedを使おうとしていました。

4
William Balkcom

レベル0バックアップを最初に作成する必要があります:

$ tar --create --verbose --listed-incremental ./game.snar --gzip \
    --file game_`date +%F`.tar.gz game/

そして翌日、このコマンドは./game.snarの作成以降に変更されたファイルのみを圧縮します。

$ tar --create --verbose --listed-incremental ./game.snar --gzip \
    --file game_`date +%F`.tar.gz game/

このアーカイブはレベル1バックアップと呼ばれます。

復元する場合は、すべてのアーカイブファイルをフォルダーに入れ、--incrementalオプションを使用して、作成順にそれぞれを抽出します。次のようになります。

$ for t in game_2011-10-2*.tar.gz; \
    do tar --verbose --extract --incremental --gzip --file $t; done
11
quanta