tar 命令不起作用

tar 命令不起作用

我试图弄清楚为什么以下 tar 命令不起作用 -

我尝试了以下两个版本,但都不起作用 -

版本 1

tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C '/home/jhonst/data_lake/1m/*.UX.csv'

我看到的错误是

tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.

版本 2

tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C '/home/jhonst/data_lake/1m/*.UX.csv' .

我看到的错误是

    tar: 
/home/jhonst/data_lake/1m/*.UX.csv: Cannot open: No such file or directory
    tar: Error is not recoverable: exiting now

请有人指导我我做错了什么

答案1

您的问题没有提供足够的细节来提供准确的答案(您的问题需要更具体,更详细,并包含更多关于您想要实现的目标的解释)但我想我明白了大概的意思。

tar 的参数-C表示“更改到此选项后的目录”,但您并没有在选项后为其提供目录名,而是试图为其提供文件列表。

此外,您将通配符括在引号中,这意味着 shell 不会将其展开以匹配文件。(新手用户经常会感到困惑,尽管您使用 tar 命令来创建存档,但参数列表的处理实际上是由 shell 而不是 tar 命令完成的)。

最简单的方法是先更改到工作目录,然后运行 ​​tar 命令。

在 shell 命令提示符下输入此命令应该可以解决问题(请注意没有引号):

cd /home/jhonst/data_lake/1m && tar -c --use-compress-program=pigz -f UX.tar *.UX.csv

如果您希望每个子目录中都有一个单独的存档(您的问题对此并不完全清楚),那么像这样的 bash 循环就可以起作用:

cd /home/johnst/lake_data
for d in *; do
   cd $d && && tar -c --use-compress-program=pigz -f UX.tar *.UX.csv
   cd /home/johnst/lake_data
done

如果你想要 tar 存档中的目录名称,那么你可以-f UX_${d}.tar在 tar 命令中使用,而不是-f UX.tar

相关内容