tar時報錯:從成員名中刪除開頭的"/"

        今天測試一個打包/var/log下log文件的腳本,但是在執行的時候報錯:tar: 從成員名中刪除開頭的“/”,在反覆檢測腳本文件後確認沒有什麼錯誤,雖然報錯,但還是成功進行打包了,如下圖:

wKioL1cZ6P2zl7YTAADvAWWJbeA407.jpgwKiom1cZ6G6QI9G5AAFQ2Qa_eVU205.jpg

後來通過查詢資料,得知是由絕對路徑搞的,下面詳細說明一下該情況:

PS:在/tmp/test下新建文件ok.txt和hi.txt,hi.txt內容爲空,ok.txt內容如下:

wKioL1cde9mRnUPcAAB6xCtksTw298.jpg

wKiom1cZ6tCRZL-2AACZdOWnmio059.jpg

  1. 手動壓縮ok.txt文件

wKioL1cZ69aDhgidAAC3VuPxOOg016.jpgwKiom1cZ66jSf6wvAADdtT5mfFs647.jpg

  1. 當前目錄是/root(注意當前目錄下沒有tmp目錄)。進行壓縮時報錯,但依然成功壓縮(同我的腳本如出一轍)。

  2. 解壓縮

    經過解壓後會在/root(當前目錄)下,自動創建tmp目錄,此時你會發現,壓縮之前的目錄是/tmp/test(絕對路徑),但是解壓之後變成了tmp/test(絕對路徑是/root/tmp/test),這其實可以可上面的報錯對上了(tar: 從成員名中刪除開頭的“/”

wKioL1cdfw_SV6stAAEvci2gm1M466.jpg

wKioL1cdgGCiOC5tAACcKrPYzio068.jpg


注:系統默認將開頭的“/”刪除,其實是出於安全考慮。試想:如果沒有刪除“/”,在解壓縮時很可能將原文件進行覆蓋,就算不會覆蓋,也可能造成系統錯亂,尤其是“/etc”等這些非

常敏感的目錄。


  •   如果確實需要將文件壓縮爲絕對路徑的方式,可以使用參數-P(大寫P),但是不建議使用。

  1. 首先將當前目錄(/root)下的tmp文件夾及壓縮文件ok.tar.gz刪除

wKiom1cdhgnC6giFAAD_J1J8b4Q033.jpg

  1. 加參數-P進行壓縮(注意原文件內容爲hello world!)

wKioL1cdiCaxY7CMAAE2zTRvGsM084.jpg

    PS:加參數-P後沒有提示刪除“/”,而且當前目錄也沒創建tmp文件夾,說明已壓縮爲絕對路徑。

  3. 在原文件ok.txt裏添加任意內容

 wKiom1cdiYGwS-7aAADA9u-EiMA117.jpg

    4. 解壓縮

    注:解壓時也需要加參數-P,否則依然會報錯 wKioL1cdi3Dzqr6QAAEgPtwKt-4321.jpg

    5. 再次查看原文件,發現已被覆蓋爲壓縮前的文件內容

wKioL1cdjB7A7qfxAAB25mrpGQk765.jpg

 PS:如果不是特殊需要,不建議大家使用參數-P

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章