損壞的 tar(產生的資料夾小於打包檔案)

損壞的 tar(產生的資料夾小於打包檔案)

我在 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 標準庫的模組並以程式設計方式執行此操作。幾年前我就做過類似的事情。

相關內容