.tar.xz
次のコマンドを使用して、ディレクトリをアーカイブ形式に圧縮しました。
tar --create --verbose --file myArchive.tar.xz /path/to/my/dir
その後、次のコマンドを使用して作成されたアーカイブの状態を確認しようとしました。
tar --compare --file myArchive.tar.xz /path/to/my/dir
このエラー行があります。
tar: /path/to/my/dir: Not found in archive
tar: Exiting with failure status due to previous error
もう一度試しましたが、同じ結果が得られました。問題は何であり、どのように解決しますか?
答え1
絶対パス名を使用する必要がある場合とコマンドの両方を使用すること-P
を検討する必要があります。--create
--compare
-P, --absolute-names
Don't strip leading slashes from file names when creating archives.
例:
$ tar -cvPf a.tar /home/user/test_file
/home/user/test_file
$ tar -dvPf a.tar /home/user/test_file
/home/user/test_file
あるいは-C
、比較する前にディレクトリを変更して使用することもできます。
-C, --directory=DIR
Change to DIR before performing any operations. This option is
order-sensitive, i.e. it affects all options that follow.
例:
tar -cvf a.tar /home/user/test_file
tar: Removing leading `/' from member names
/home/user/test_file
tar -dvf a.tar -C/ home/user/test_file
home/user/test_file
答え2
先行エントリが/
削除され、アーカイブにパス名が見つかりません。
標準のGNUを使用しtar
てファイルを追加すると、/absolute/path/file.ext
先行が/
削除され、ファイル名がabsolute/path/file.ext
アーカイブ内で指定されます。
通常、これはファイルをアーカイブしたときにstderrに書き込まれます。出力を確認すると、次の例のようになります。
# tar -cvf test.tar /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd
# tar -tf test.tar
etc/passwd
だから走りましょう
tar --compare --file myArchive.tar.xz path/to/my/dir
pathがある場合、パスの最初の文字は省略されます/
。