当大家用tar打包文件时,通常会有2种方式来指定需要打包文件的目录位置,一个是采用相对路径,一个是采用绝对路径;当使用相对路径进行打包,结果一切正常;如果换成使用绝对路径来打包,却会出现以下提示信息:tar: 从成员名中删除开头的“/”,这是为何呢?
首先,出现这种提示是正常的,无须担心,它只是linux系统对用户的一个善意的提醒,并不影响打包操作,如果不想看到这个提示信息,在执行打包命令时,带上选项P就可以了。那这提醒是一个什么用意呢?我们来分析一下:
下面是/3.12目录下的文件结构:
我们执行一个如下打包命令,这时系统就会给出一个提示:
通过ll我们可以看到包文件已经成功创建:
而且我们还可以查看包文件里面的内容:
这时,我们再通过命令来直接解包,我们会发现解包后的目录名称是3.12,整个的文件结构是3.12/a/a1/1.txt:
查看3.12下面的文件结构,实际只有文件a/a1/1.txt,没有任何问题:
也就是说,当使用绝对路径进行打包时,系统会按照绝对路径来对被打包文件进行打包,解包时自然也是按照这个规则来进行;这样我们就可以理解了,如果当时打包时,系统不去掉打包文件前面的/的话,那它解包后的文件将会是以/3.12/a/a1/1.txt方式去覆盖,这种覆盖的方式会造成2中可能:1)直接把根目录覆盖了;2)如果解包文件存放到当前目录下,文件名是不允许以/开头的。综合以上,系统在打包时就去掉了/,这就是从成员名中删除开头的“/”的真正原因。