當使用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。