我正在尝试使用以下命令创建 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
选项不需要连字符。
使用连字符时,该选项的参数-f
是z
。因此该命令实际上是尝试将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"*