1. 程式人生 > >Linux打包命令tar的解壓路徑問題

Linux打包命令tar的解壓路徑問題

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/目錄下