验证创建的存档时出现“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

前导/可能已被删除,因此在存档中找不到路径名。

当使用标准 GNUtar并添加文件时,/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

如果路径是 则省略路径的第一个字符/

相关内容