tar命令结合pigz打包csv文件时报错的问题排查求助
问题原因及解决方案
两个错误命令的问题分析
版本1错误点
-C参数的作用是切换到指定目录后执行打包操作,要求后跟目录路径,你错误将带通配符的文件路径传给了该参数,不符合参数规范- 命令末尾没有指定任何需要打包的文件列表,tar无法识别要处理的内容,因此抛出拒绝创建空归档的报错
版本2错误点
- 仍然存在
-C参数误用问题,tar会尝试将/home/jhonst/data_lake/1m/*.UX.csv作为目录进行切换,该路径显然不存在,因此触发找不到文件/目录的报错 - 通配符
*被单引号包裹时,shell不会对其进行展开匹配,只会将其作为字面量文件名处理,即使修正-C参数也无法匹配到目标文件
正确命令写法
写法1:直接打包(保留完整路径)
如果不需要压缩包内的文件去掉前缀路径,直接执行:tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar /home/jhonst/data_lake/1m/*.UX.csv
写法2:用-C切换目录(仅保留文件名)
如果希望压缩包内的文件只保留本身的文件名,不携带前面的长路径,正确使用-C参数:tar -c --use-compress-program=pigz -f /home/jhonst/data_lake/1m/UX.tar -C /home/jhonst/data_lake/1m/ *.UX.csv
该命令逻辑为:先通过-C切换到/home/jhonst/data_lake/1m/目录,再用未被引号包裹的通配符*.UX.csv匹配当前目录下所有符合要求的文件进行打包。
内容的提问来源于stack exchange,提问作者usert4jju7
相关产品推荐
相关产品推荐

