
我需要建立文件的壓縮檔案,並能夠快速從中提取單一文件/目錄。
問題是,例如,tar.bz2 似乎不是此類任務的最佳選擇 - 在我的計算機上從 200Mb 存檔(50000 個文件)中提取單個 4kb 文件需要 17 秒。
是否有某種存檔格式可以從存檔中快速匯出單一檔案(並且可以在 Linux 上運行)?
答案1
像素是 xz 的平行索引版本。
# Compress:
tar -I pixz -cf foo.tar.xz ./foo
# Decompress:
tar -I pixz -xf foo.tar.xz
# Very quickly list the contents of the compressed tarball:
pixz -l foo.tar.xz
# Very quickly extract a single file:
pixz -x dir/file < foo.tar.xz | tar x
答案2
Zip 格式單獨壓縮每個文件,然後將它們(與存檔內容的目錄)組合成一個存檔文件。
答案3
除了已經提到的 zip 格式之外,dar
和dump
實用程式也擅長處理此問題,與 zip 不同的是,保留了 unix 權限。因為dar
您想避免使用固定存檔選項,因為這又回到了一次壓縮整個檔案的tar/gzip 方法,這提供了更好的壓縮效果,但使得提取單個檔案需要更長的時間,因為整個檔案必須解壓縮,直到找到所需的文件。 dump
可以很好地處理大量小檔案(數萬個),並且可以進行多執行緒壓縮,但它只能讀取 ext[234] 檔案系統。
答案4
.tar.gz
具有更快的解壓縮速度,但代價是最差的壓縮大小。編輯:伊格納西奧·巴斯克斯-艾布拉姆斯忍者了我。