ファイルの削除と除外を含むtarファイルの生成

ファイルの削除と除外を含むtarファイルの生成

次のディレクトリ構造とファイルがあります。

test:
total 16
drwxr-xr-x 2 db2root1 db2iadm1 4096 Jan 18 16:52 archive
-rw-r--r-- 1 db2root1 db2iadm1   34 Jan 18 16:38 file1.txt
-rw-r--r-- 1 db2root1 db2iadm1   34 Jan 18 16:38 file2.txt
drwxr-xr-x 2 db2root1 db2iadm1 4096 Jan 18 17:04 subdir

test/archive:
total 0

test/subdir:
total 4
-rw-r--r-- 1 db2root1 db2iadm1 34 Jan 18 16:38 file3.txt

次のコマンドを使用して、ディレクトリアーカイブなしでディレクトリアーカイブにtarファイルとfile1.txtファイルを作成したいと思います。

tar --remove-files --exclude file1.txt --exclude archive -cvzf /test/archive/test.tar.gz /test

--exclude オプションと --remove-files オプションを別の場所に配置しましたが、常に次のエラーメッセージが表示されます。

tar: Removing leading `/' from member names
/test/
/test/subdir/
/test/subdir/file3.txt
/test/file2.txt
tar: /test: Cannot rmdir: Directory not empty
tar: Exiting with failure status due to previous errors

デフォルトのディレクトリ/テストに関連するエラーを防ぐ方法は?

答え1

( cd /test; tar --remove-files --exclude file1.txt --exclude archive -cvzf archive/test.tar.gz * )

トリックは、cdディレクトリに移動し、サブシェルが親tar *シェルcdに与える影響を防ぐことです。

答え2

を使用しようとしています--remove-files。それから「ファイルをアーカイブに追加して削除してください」

tarballを所定の位置に置き、/test/archive/test.tar.gztarで滑らかにします/test/。この--remove-filesオプションを使用すると、最後にディレクトリを削除するように求められますが、tar実行するたびにファイルにアクセスするため、ディレクトリを削除することはできません。/test/tar/test/archive/test.tar.gz

このオプションをキャンセルしたり、別のディレクトリに--remove-files配置したりできます。tar

関連情報