tar 退出时显示“无法统计:目录中没有这样的文件”,为什么?

tar 退出时显示“无法统计:目录中没有这样的文件”,为什么?

我正在尝试使用以下命令创建 tar.gz 文件:

sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

然后它开始创建文件(文件夹中的许多文件),但随后出现以下错误:

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

我没有看到这个错误的任何描述,这是什么意思?

答案1

-vcfz选项中删除。tar选项不需要连字符。

使用连字符时,该选项的参数-fz。因此该命令实际上是尝试将dvr_rdk_v1.tar.gz和归档dvr_rdk到名为 的归档文件中z。如果没有连字符,选项的语义会发生变化,因此命令行上的下一个参数(即存档的文件名)将成为标志的参数f

另请检查您对执行命令的目录的写入权限。

答案2

-f选项应直接位于文件名之前。所以,使用tar -vczf filename.tar.gz而不是-vcfz

答案3

焦油命令历史上是少数不遵循 Unix 的命令之一实用语法指南

tar 的标准页面说:

f
使用第一个文件操作数(或第二个,如果已指定 b)作为存档的名称,而不是与系统相关的默认值

虽然语法指南包括:

准则 5:
一个或多个不带选项参数的选项,最多后跟一个带有选项参数的选项,当分组在一个“-”分隔符后面时,应该被接受。

因此,虽然您输入的命令 ,tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/在旧版本的 tar 上可以正常使用,但严格遵循实用程序语法指南而编写的某些版本的 tar 会将其解析为“用作”z的文件参数-f。因此,您应该使用以下内容来实现便携:

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/

答案4

对于未来的读者来说,这个帖子这就是我的答案。将通配符保留在引号之外:tar -zcf archive.tar.gz "file-0"*

相关内容