如何從 tbz 中提取單一文件

如何從 tbz 中提取單一文件

我有以下存檔目錄:

itunes20140618.tbz

我想從中提取單個文件,名稱為:

itunes20140618/video

我該怎麼做?

到目前為止,我正在做

$ bzip2 -d /tmp/itunes20140618.tbz 

但它似乎創建了一個包含所有內容的 tar 目錄。我如何提取單一視訊檔案?

目前,如果我透過 tar 提取一個文件,大約需要 1 分鐘,然後在完成讀取 tar 存檔時再「掛起」20 分鐘。有什麼想法如何改進這個嗎?

答案1

tar -xvjf itunes20140618.tbz itunes20140618/video

對於這種情況應該可以做到這一點,但如果您需要更多幫助,請執行以下操作:

info tar

若要提取特定的存檔成員,請提供其確切的成員名稱作為參數,如 列印的那樣--list (-t)。如果您錯誤地刪除了先前放入存檔中的檔案之一collection.tar (例如blues),您可以將其從存檔中提取,而無需更改存檔的結構。其內容將與blues您刪除的原始檔案相同。

首先,請確保您位於該practice目錄中,並列出該目錄中的檔案。現在,刪除檔案 ,blues並再次列出目錄中的檔案。

blues現在您可以從存檔檔案「collection.tar」中提取成員,如下所示:

 $ tar --extract --file=collection.tar blues

如果再次列出該目錄中的文件,您將看到該文件 blues已恢復,並具有其原始權限、資料修改時間和所有者。 (這些參數將與您最初將文件放入存檔時所具有的參數相同;但是,您在從檔案系統中刪除文件之前可能所做的任何更改都不會對存檔成員進行。) 存檔文件collection.tar與解壓縮之前的文件相同blues。您可以透過運行tar 來確認這一點--list (-t)

答案2

.zip諸如、.rar或 之類的存檔.7z由許多捆綁在一起並壓縮的檔案組成。檔案.tar由許多捆綁在一起的檔案組成,但 tar 格式不包括任何壓縮。.gz,.bz2或檔案.xz是單一壓縮檔。 A .tar.gz.tar.bz2等是壓縮檔案;.tbz是一個偶爾用來代替 的後綴.tar.bz2,就像.tgz有時用 how 代替 一樣.tar.gz

bzip2 -d /tmp/itunes20140618.tbz解壓縮檔。您只剩下未壓縮的 tar 檔案。bzip2不創建 tar:它解壓縮提供給它的內容,並且由於給定的是壓縮的 tar,因此輸出是未壓縮的 tar。您可以使用 解壓縮產生的檔案tar -xf /tmp/itunes20140618.tar。要僅提取一個文件,即tar -xf /tmp/itunes20140618.tar itunes20140618/video.

Linux、FreeBSD、MINIX3 和 OSX 上最新版本的 tar 會自動偵測壓縮檔案,因此您可以先呼叫 tar,而不必擔心檔案上使用的壓縮:

tar xf itunes20140618.tbz itunes20140618/video

舊版的 tar 以及當今的許多系統,例如 OpenBSD、Solaris 和帶有 BusyBox 的 Linux,至少可以bzip2在幕後調用,即使您必須使用選項明確地告訴它們-j

tar -xjf itunes20140618.tbz itunes20140618/video

相關內容