
我在 SuSe 10.3 Server 版本上建立的 tarball 遇到問題。
.tar 檔案大小為 6.5 GB,但如果我在 Ubuntu 9.10 下解壓縮它,生成的資料夾只有 1.5 GB 大小。
使用的命令:tar cvf
用於打包、tar xvf
用於解包。
也許有人知道如何解決這個問題,那就太好了。
乾杯。
答案1
如果目錄中有符號鏈接或硬鏈接,那麼 tar 可能會將每個符號鏈接添加為單獨的檔案。然後,當您在 Linux 檔案系統上解壓縮它時,它將恢復鏈接,然後所有內容都會佔用更少的空間。
Tar 不用於壓縮,只是用來建立包含多個檔案的檔案。這就是為什麼您通常會發現它透過 gzip 或 bzip 進行管道傳輸。
答案2
使用 cpio 可能會得到更好的結果,它更適合較大的備份,並且可以編寫腳本來正確處理符號連結和特殊檔案。
答案3
如果您有很多小文件,那麼您可能會遇到 tar 中的封鎖和目錄開銷。重要的資訊是來源目錄有多大。 tar 可能透過不為檔案分配區塊來壓縮檔案中的空白空間。嘗試--apparent-size
選擇du
.
您可以嘗試將生成的文件列表tar -tf
與提取的文件進行比較。提取以tar -xf
查看提取時是否出現任何錯誤。嘗試重新建立 tar 的副本以查看它有多大。
答案4
我建議嘗試帕克斯。至少,在 CentOS 中是這樣稱呼的。 IIRC,它可以透過跳過無效的 tar 成員來處理損壞的 TAR 檔案。否則我建議你嘗試一下壓縮包檔案Python 標準庫的模組並以程式設計方式執行此操作。幾年前我就做過類似的事情。