当使用Linux打包文件时往往出现如本文标题的提示,该怎么办,到底是为什么?
且看老男孩老师的解答。
[root@oldboy ~]# tar zcvf hosts.tar.gz /etc/hosts
tar: 从成员名中删除开头的“/”
1.出现这个提示,并不是语法错误,只是一个打包的安全提示,当做没有看见忽略即可。
2.当打包采用全路径,如/etc/hosts路径打包时,就会产生提示。系统提示并自动去掉了/,目的是防止将来解压数据,覆盖备份时的文件
网上充斥着大量的加-P即,tar zcvfP 方式来禁止出现提示是不合适的,误导了很多小白,包括老男孩的学生,其实这样加-P打包是极其不安全的。
因为这有可能在解压时候完全覆盖解压前的文件,即/etc/hosts,导致数据丢失。
3.测试区别和覆盖数据的问题
测试加不加-P区别和覆盖数据的问题 1)增加test.txt,并加入数据 [root@oldboy ~]# echo "I am oldboy" >/tmp/test.txt [root@oldboy ~]# cat /tmp/test.txt I am oldboy 2)正常打包(不带-P) [root@oldboy ~]# tar zcf test.tar.gz /tmp/test.txt tar: 从成员名中删除开头的“/” #<==出现提示。 [root@oldboy ~]# tar tf test.tar.gz tmp/test.txt #<==查看打包后是相对路径,系统自动去掉了/。 3)加-P打包屏蔽提示。 [root@oldboy ~]# tar zcfP test1.tar.gz /tmp/test.txt #<==没了提示。 [root@oldboy ~]# tar tf test1.tar.gz tar: 从成员名中删除开头的“/” #<==查看和解压,默认还会出现提示,双重保护。 /tmp/test.txt #<==查看数据是绝对路径,这就是打包数据保留了/。 4)此时如果加-P解压前面用-P打包的压缩包,就会覆盖原始的打包前的文件 a.模拟原始文件改动了内容。 [root@oldboy ~]# echo "good boy" >>/tmp/test.txt [root@oldboy ~]# cat /tmp/test.txt I am oldboy good boy #<==这是增加的内容 b.解压还原带-P打包的文件,且带-P解压 [root@oldboy ~]# tar xfP test1.tar.gz [root@oldboy ~]# cat /tmp/test.txt I am oldboy ##原始文件已被覆盖了。。刚刚追加的数据没有了。
4.结论:
忽略提示,直接打包就好了,千万不要加-P。