linux 解決tar命令的"tar: Removing leading `/' from member names"問題


問題描述

今天在寫腳本的時候,涉及到了一個打包壓縮的過程。是用tar命令來打包某文件夾並壓縮。

我之前通常都會在腳本中指定文件夾的絕對路徑,這樣可以避免很多麻煩。但是本次執行腳本的過程中,我發現這個tar命令會報一個warning出來。

tar: Removing leading `/' from member names

這個warning並不影響最后執行的結果,但是十分影響美觀。

問題原因

為了解決此問題,我簡單查了一下資料。發現tar命令會默認使用相對路徑,如果使用絕對路徑且不加相應參數時,就會出現此error。

解決方法

其實也很簡單,在tar命令的參數中加入-P參數即可。但是我們需要注意-p參數的位置,要將其放在-z和-f之間。即:

tar zcPf test.tar.gz /path/to/directory

這里的/path/to/directory可以換成你想要的絕對路徑。

這樣它就不會報那個錯誤了。

延伸

tar命令打包和解壓,各常用參數的意思。

  1. -z: 對單個tar包進行壓縮,只有對.gz文件進行操作時使用。如:

    #解壓.gz文件
    tar zxf jdk-8u241-linux-x64.tar.gz
    #打包並壓縮至.gz文件
    tar zcf jdk-8u241-linux-x64.tar.gz jdk8
    
  2. -x: 建立一個解壓文件的指令

  3. -c: 建立一個壓縮文件的指令

  4. -f: 添加一個參數名稱,通常是參數中最后一個位置,后加參數名。

  5. -C(大寫): 指定解壓路徑,如此路徑不存在,則解壓不成功。
    例如:

    tar zxf jdk-8u241-linux-x64.tar.gz -C /usr/local/pppp/
    

    假如/usr/local/pppp/文件夾不存在,此解壓不會成功。

  6. -p(小寫): 使用原文件的原來屬性,不改變屬主、權限等屬性。

  7. -v: 顯示詳細進度,但是太多了,一般不打,除非排錯。

  8. -j: 對單個tar包進行壓縮,只有對.bz2文件進行操作時使用。
    使用方法類似於-z。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM