tar:増分アーカイブを選択したときの潜在的なエラー(?) - ターゲットからファイルを削除する

tar:増分アーカイブを選択したときの潜在的なエラー(?) - ターゲットからファイルを削除する

私は非常に興味深い観察をしました。これは悪い表現かもしれません。

私のユースケースは次のとおりです

  • フォルダをバックアップし、そのフォルダのファイルセットを --exclude-from ファイルに追加します。増分バックアップ(-gオプションセット)を使用しています。
  • 新しいマシンで、tarを元のマシンと同じ場所に復元します。新しいシステムにはすでにこの場所にいくつかのファイルがあります。ファイルがあれば交換/上書きしたいと思います。

再現段階

  1. 次のようにファイルとフォルダ構造を作成します。

    /tmp/src
    └── etc
        ├── A.cfg
        └── config
            ├── 1.cfg
            ├── 2.cfg
            └── 3.cfg
    
  2. 除外ファイルとインクルードファイルの作成

    mbp:tarTests jhartman$ cat /tmp/include.cfg
    /tmp/src/etc/
    mbp:tarTests jhartman$ cat /tmp/exclude.cfg
    /tmp/src/etc/config/*.cfg
    
  3. プロフィールの作成

    $ rm -f /tmp/snapshot 
    $ tar -g /tmp/snapshot -cvz -f /tmp/test.tar.gz -X /tmp/exclude.cfg -T /tmp/include.cfg
    
    
    ./tar-1.27/src/tar: /tmp/src/etc: Directory is new
    ./tar-1.27/src/tar: /tmp/src/etc/config: Directory is new
    ./tar-1.27/src/tar: Removing leading `/' from member names
    /tmp/src/etc/
    /tmp/src/etc/config/
    /tmp/src/etc/A.cfg
    
  4. 新しいサーバーのアーカイブをキャンセルします。アーカイブ解除前の新しいサーバー上のファイル:

    /tmp/src
    └── etc
        ├── A.cfg
        └── config
            ├── 3.cfg
            ├── 4.cfg
            └── 5.cfg
    
    • アーカイブ解除(対象コンピュータから)

      $TAR_BASE/src/tar --overwrite --extract --force-local --listed-incremental=/dev/null --file /tmp/test.tar.gz -v -C /
      
      tmp/src/etc/
      tmp/src/etc/config/
      ./tar-1.30/src/tar: Deleting ‘tmp/src/etc/config/4.cfg’
      ./tar-1.30/src/tar: Deleting ‘tmp/src/etc/config/5.cfg’
      tmp/src/etc/A.cfg
      

したがって、最終的にそのフォルダ内のファイルは次のようになります。

/tmp/src
└── etc
    ├── A.cfg
    └── config
        └── 3.cfg

ご覧のとおり、ソースマシンにはあり4.cfgません5.cfgが消えています。これは/tmp/src/etc/config/*.cfg除外ファイルでの使用によるものだと思います。

この動作はバージョンによって変わるという点に言及する価値があります。 1.30、1.27、1.27.1、1.29 - NOK、1.25、1.26、1.28 - OK(NOKはファイルメッセージに関心のある項目を削除できることを意味します)。

どう思いますか?

ありがとう、ヤリク

アップロード日: 2018-08-21, 20:51

どのバージョンを実行しても、ジョブの--list結果は同じで、次のように表示されます。Dconfigフォルダから:

tar --list --incremental --verbose --verbose --file /tmp/test.tar.gz

drwxr-xr-x jhartman/staff   16 2018-08-21 20:44 tmp/src/etc/
Y A.cfg
D config

drwxr-xr-x jhartman/staff   22 2018-08-21 20:44 tmp/src/etc/config/
N 1.cfg
N 2.cfg
N 3.cfg

-rw-r--r-- jhartman/staff   30 2018-08-21 20:44 tmp/src/etc/A.cfg

アップロード日:21:03

ちなみに私がテストに使ったスクリプトはhttps://github.com/jaroslawhartman/tar-tests買い戻し。

output.txt詳細なテスト結果については参考資料を参照してください。

ベストアンサー1

おすすめ記事