問題描述
今天在寫腳本的時候,涉及到了一個打包壓縮的過程。是用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命令打包和解壓,各常用參數的意思。
-
-z: 對單個tar包進行壓縮,只有對.gz文件進行操作時使用。如:
#解壓.gz文件 tar zxf jdk-8u241-linux-x64.tar.gz #打包並壓縮至.gz文件 tar zcf jdk-8u241-linux-x64.tar.gz jdk8
-
-x: 建立一個解壓文件的指令
-
-c: 建立一個壓縮文件的指令
-
-f: 添加一個參數名稱,通常是參數中最后一個位置,后加參數名。
-
-C(大寫): 指定解壓路徑,如此路徑不存在,則解壓不成功。
例如:tar zxf jdk-8u241-linux-x64.tar.gz -C /usr/local/pppp/
假如/usr/local/pppp/文件夾不存在,此解壓不會成功。
-
-p(小寫): 使用原文件的原來屬性,不改變屬主、權限等屬性。
-
-v: 顯示詳細進度,但是太多了,一般不打,除非排錯。
-
-j: 對單個tar包進行壓縮,只有對.bz2文件進行操作時使用。
使用方法類似於-z。