Linux打包命令tar的解壓路徑問題
阿新 • • 發佈:2019-02-19
Linux中常用的解壓縮命令
tar # 壓縮和解壓命令
通常的使用方法是
tar cvzf /home/user/somename.tar foldername # 將foldername資料夾下的內容都壓縮到指定位置/home/user下,打包成名叫somename.tar的壓縮檔案
解壓方法是
tar xzvf somename.tar # 將somename.tar檔案解壓到當前執行命令所在目錄
解壓後的路徑就是壓縮式的路徑,會自動生成 foldername這個資料夾,如果資料夾存在,就不會重新生成,但壓縮檔案記憶體在的新的內容會覆蓋舊的內容,意思是資料夾下老的檔案,但tar包裡沒有涉及到的不會覆蓋,增量部署程式碼通常可以用直接在目錄解壓檔案的方式
注意: 如果壓縮時壓縮檔案的路徑是 folder1/folder2/** 那解壓出來也會在 當前路徑 建立 folder1/folder2,總之壓縮時是什麼目錄層級,解壓時在當前目錄也是一樣的目錄結構
當被壓縮檔案是絕對路徑是,會報一個錯誤:tar: 從成員名中刪除開頭的“/”
這是因為被壓縮檔案寫了絕對路徑,例如如下命令
tar cvzf /home/user/somename.tar /foldername
這種情況需要加引數P(大寫),就不會抱錯,如下:
tar cPvzf /home/user/somename.tar /foldername
但實際上壓縮時仍然刪除了‘/’,所以解壓出來並不是從根目錄開始解壓,不會在根目錄建立foldername資料夾,仍然是在 當前路徑 下建立了foldernam目錄
如果只想壓縮檔案,不想建立資料夾,可以進入到被壓縮檔案內執行命令
tar czvf /home/user/somename.tar *
這樣就壓縮當前資料夾下的所有內容,並把壓縮檔案儲存到/home/user/目錄下