Tar 压缩时通配符的问题

问题

因为程序生成的日志很大,而通过压缩可以达到10%的压缩率,所以在程序结束时将日志压缩成gz包,这样可以节省硬盘空间和传输效率。

实际使用中,把日志放在了/tmp文件夹下,而程序不定在哪个文件夹下,所以一开始使用的压缩命令行如下tar -czvPf /tmp/test.tar.gz /tmp/*.log,打开压缩包发现包内有全路径,需要多次进入后才能看到log文件。这使操作略微不便。

尝试

百度后,得知可以用-C /tmp去除压缩包内的全路径的——嗯,用tar -czvPf /tmp/test.tar.gz -C /tmp aa.log bb.log的确没路径了。

然后用tar -czvPf /tmp/test.tar.gz -C /tmp *.log就报错:找不到*.log这文件。

【Tar 压缩时 -C *的问题】中提到,通配符是由Shell进行展开的,所以在tar命令执行前*.log已经被扩展成了aa.log bb.log

而这Shell通配符扩展需要在全路径下或当前路径下,因为tar -czvPf /tmp/test.tar.gz -C /tmp *.log这个中用的是相对路径,所以在shell的当前路径下扩展*.log
奇怪的是,如果Shell 在当前路径扩展不了*.log,怎么还会把*.log作为参数传给tar呢。

所以还是使用cd /tmp && tar -czvf test.tar.gz *.log更加地简单明了了吧。

结论

去除包内全路径,并且使用通配符,需要使用cd /tmp && tar -czvf test.tar.gz *.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值