ソースディレクトリを更新するときにtarを使用しても安全ですか?

ソースディレクトリを更新するときにtarを使用しても安全ですか?

と同じ質問をする必要があります。これ

tarディレクトリを使用してバックアップする場合

  1. 新しいファイル/ディレクトリが作成されています。次へ追加

  2. 現在のファイル/ディレクトリは次のとおりです。編集済みそして削除済み

安全な結果が期待できますか?

渡す安全結果私の言葉は:

  1. tarソースディレクトリ/サブディレクトリの内容を台無しにしません。
  2. tarアーカイブを構築すると、見つかったとおりにアーカイブに追加されます。
  3. 説明された変更が発生した場合でも、成功信号が表示されます。

答え1

1. tarはソースディレクトリ/サブディレクトリの内容を台無しにしません。

更新アクセス時間を台無しに計算しない限り、これは本当です。それ以外のtarはソースツリーで何も変更しません。

2. アーカイブを構築すると、見つかった tar がアーカイブに追加されます。

実際に「今」には価値あるものがあります。 tarがソースツリーを読み込んでいる間に変更が発生した場合、アーカイブに含まれる内容は多少予測できません。特に、tarがファイルを読み込んでいる間にファイルが変更された場合、tarがある時点で行ったようにファイルのコピーを書き込むという保証はありません。たとえば、次のような場合があります。

  • tarはのfoo0〜4095バイトを読みます。
  • 一部のプログラムは、単一のfoo書き込み操作でバイト 4095-4096 を変更して書き込みます。
  • tarはfoo.tarファイルの4096〜8191バイトを読み取ります。

fooアーカイブのコンテンツは、既存のコンテンツも新しいコンテンツでもなく、これら2つが混在した形です。もう1つの例は、tarがソースツリーを読み込んでいる間にファイル名を変更すると、tarがそのファイルを完全にスキップできることです。

3. 説明した変更が発生した場合でも、成功が表示されます。

いいえ、必ずしもそうではありません。 tarがソースを読み込んでいる間にソースが変更されたことを検出すると、文句を言って失敗状態を返すことができます。特に、tarはコンテンツを書き込む前にファイルサイズをアーカイブに書き込む必要があるため、最初に各ソースファイルのサイズを読み取ります。レコードサイズに達する前にファイルの終わりに達すると、回復するための確実な方法がないため、少なくともこの場合、すべてのtar実装で苦情が発生します。

安全にバックアップするには、ファイルシステムまたはボリュームレベルのツールを使用してスナップショットを撮ってバックアップします。

答え2

いいえ。

  • tarがディレクトリを検索した後にファイルを追加すると、そのファイルは追加されません。
  • ファイルがアーカイブに追加され、ディスクから削除されると、そのファイルはアーカイブから削除されません。
  • これは内容を変更した場合にも当てはまります。

Unix(tarではない)は1つのことを行います。

  • tarがファイルを収集している間(編集のために)ファイルを開くと、tarがどのバージョンのファイルを使用するかがわかりません(メモリ内のバージョン、ディスク上のバージョン、または両方の混合)。

パイプを読み書きするためにtarを使用できることを覚えておいてください(実際にはティーtar世界が若いときにテープを意味する)、だからタール

  • 一度書く
  • 出力を巻き戻しません。

上記は基本ですtar -c

  • tar -u新しいファイルが追加されます。
  • ファイルをtarreする場合は、tar --diffシェルとtarファイルの組み合わせを使用してtarファイルとディレクトリを同期できます。tar --delete

関連情報