生成されたアーカイブを確認すると、「tar:/path/to/my/dir:アーカイブに見つかりません」エラーが発生する

生成されたアーカイブを確認すると、「tar:/path/to/my/dir:アーカイブに見つかりません」エラーが発生する

.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がある場合、パスの最初の文字は省略されます/

関連情報