如何從大型 tar.gz 檔案中提取單一資料夾?

如何從大型 tar.gz 檔案中提取單一資料夾?

我正在使用這個命令5GB檔案

tar -zxvf archive.tar.gz /folder/in/archive

這是正確的方法嗎?沒有命令行輸出似乎要花很長時間...

答案1

tar儲存相對路徑預設情況下。如果您嘗試儲存絕對路徑,GNU tar 甚至會這樣說:

tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names

如果您需要提取特定資料夾,請查看 tar 檔案中的內容:

tar -tvf foo.tar

並記下確切的檔案名稱。就我的foo.tar文件而言,我可以/home/foo/bar這樣提取:

tar -xvf foo.tar home/foo/bar # Note: no leading slash

所以不,您發布的方式(不一定)不是正確的方式。您必須省略前導斜線。如果您想模擬絕對路徑,請先cd /執行並確保您是超級用戶。另外,這也有同樣的作用:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

tar將路徑轉換為相對路徑有非常明顯、充分的理由。一是能夠在原始來源以外的地方恢復檔案。另一個是安全。您可以提取存檔,期望其檔案出現在當前工作目錄中,但卻錯誤地覆蓋其他地方的系統檔案(或您自己的工作)。

注意:如果您使用該-P選項,tar 將要歸檔絕對路徑。因此,在提取之前檢查大型檔案的內容總是值得的。

相關內容