tar命令路径问题分析:`tar: 从成员名中删除开头的“/”`

使用tar命令打包时,如果打包目标是绝对路径会出现警告tar: 从成员名中删除开头的“/”

根本原因是tar打包时会把目录结构打进去,解包时也会把对应的目录结构解出来

实操

目录结构:/data/dir/a.txt,打包dir目录

相对路径

通常建议相对路径打包,会先cd到目标所在目录data

打包
在这里插入图片描述
在这里插入图片描述

归档管理器打开tar包是这样的。0字节是因为a.txt里边没东西,都是空的
在这里插入图片描述

删除dir,然后解包。这是正常,也是我们想要的样子
在这里插入图片描述

绝对路径

tar在打包时,如果打包目标是绝对路径,会警告tar: 从成员名中删除开头的“/”

打包,目标是绝对路径,警告tar: 从成员名中删除开头的“/”
在这里插入图片描述
归档管理器打开tar包是这样的。(0字节是因为a.txt里没数据,空内容)
在这里插入图片描述
删除dir,然后解包。可以看到,是以data开始的。所以刚才的警告:从成员名中删除开头的“/”,意思是把打包目标的目录结构从/data/dir变成data/dir,这样我们无论在哪个路径下解压,解压出的文件目录结构都是相对于当前路径的。

所以根本原因是因为tar打包时会把目录结构打进去,解包时也会把对应的目录结构解出来
这就造成,如果打入的是绝对路径,解包时就会把原本的/data下的内容覆盖掉,如果我们是打的是home、root等比较重要的包,解包时很可能会把重要数据覆盖

在这里插入图片描述

强行操作会怎么样

现在测试一下,绝对路径解包时会不会覆盖。tar指令有-P选项,作用是不去掉开头的 /

tar指令man文档
在这里插入图片描述为了测试的更全面,新增了/data/dir/b.txt,并且写入hello
在这里插入图片描述
打包dir,带上-P (有些选项写法是有顺序的,这里-P写在前边)
在这里插入图片描述
归档管理器打开tar包是这样的
在这里插入图片描述
在a.txt写入"哈哈",删除b.txt
在这里插入图片描述
解压tar。(同样需要带-P,否则还是会自动去掉/变为相对路径的目录结构)
在这里插入图片描述
可以看到,文件被覆盖了(b.txt解包回来了,a.txt内容被覆盖了)


结论

可以看到,用绝对路径打包时,不加-P选项,其实也不会造成(解压时覆盖等)安全问题,因为系统自动帮我们去掉了开头的"/",将绝对路径变成了相对路径,但是包结构会冗余很多,包含了上层目录。

所以,平时用tar指令打包时,最好是先cd到目标目录下使用相对路径 。用相对路径打包,解包后的文件就是想要打包的文件,不会出现多余的目录结构。


  • 20
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值