取消歸檔單一文件掛起

取消歸檔單一文件掛起

我正在嘗試取消歸檔一個非常大的目錄。以下是解壓縮整個內容的方法:

$ sudo tar -xjf itunes20140618.tbz --verbose
x itunes20140618/
x itunes20140618/genre_artist
x itunes20140618/imix_type
...etc...

但是,如果我嘗試僅取消存檔一個文件,它會正確執行此操作,但命令將無限期掛起。此外,使用 --verbose 語句時它不會列印任何輸出。這是一個例子:

$ sudo tar -xjf itunes20140618.tbz itunes20140618/imix --verbose
[ nothing prints...it just hangs. But it does un-tar that single file ]

答案1

不要在非選項參數之後指定選項,尤其是tar它是一個非標準命令,其多種實作支援多種古老和較新的方法來解析選項、操作和參數。

在:

tar -xjf itunes20140618.tbz itunes20140618/imix --verbose

itunes20140618.tbz將是選項的參數-fitunes20140618/imix一個額外的非選項參數,用作從存檔中提取的成員的名稱。是否--verbose被視為額外參數(要提取的另一個成員的名稱)或選項將取決於其實作和版本,tar甚至可能取決於它的編譯方式或執行時間環境。

就您而言,您很可能是那些不將其視為全域選項的tar人(大多數)之一。--verbose

在這裡,使用:

tar -xjf itunes20140618.tbz --verbose itunes20140618/imix

或更便攜:

bunzip2 < itunes20140618.tbz | tar xvf - itunes20140618/imix

tar用標準替換(儘管便攜性較差)pax

bunzip2 < itunes20140618.tbz | pax -vr itunes20140618/imix

答案2

您正在使用的bzip2不是文件歸檔器所以tar本質上充當 a file archiverbzip2壓縮它們。

例如,使用 tar 歸檔檔案集合,然後使用 gzip 壓縮產生的歸檔檔案會產生副檔名為 .tar.gz 的檔案。

但這種方法有一個缺點,如 wiki 文章所述:

要提取或修改一個檔案是很困難的。提取一個檔案需要解壓縮整個存檔,這可能非常耗時和空間。

因此,如果您經常提取單個文件,我的建議是僅使用.taror.zip或。.rar

相關內容