2014-08-31 121 views
1

我們有多個.NET Web應用程序,它們共享相當多的通用庫。他們都不在GAC中。對具有多個相同文件的文件系統目錄樹進行高效壓縮

部署約束是所有這些Web應用程序都有專用目錄。這會導致總目錄結構中出現大量重複的dll。

此目錄結構是從一個zip歸檔文件中提取的。

因此,zip存檔在不同的目錄中找到了許多相同的文件。

這是一個巨大的冗餘,我希望在zip壓縮文件中消除冗餘,如果在磁盤上創建冗餘文件,我不在乎。我看到優化zip的兩種方法:

  1. 使用Windows符號鏈接和連接來減少物理相同文件的數量。
  2. 使用智能壓縮不會壓縮相同的文件數據兩次。

方法1

我用拉鍊和7Z測試壓縮目錄結構。我使用路口和文件符號鏈接作爲減少磁盤空間的手段。

不幸的是,zip和7z都壓縮了連接,就好像它們是完整的目錄一樣。一個符號鏈接被壓縮爲一個零長度文件7z,其性質作爲符號鏈接在解壓縮時丟失。 zip會遍歷符號鏈接並壓縮目標數據,這會導致歸檔中的文件內容重複。

總之,我沒有使用第一種方法消除重複文件數據。

方法2

我想剛好被http://sourceforge.net/p/sevenzip/feature-requests/794/描述。但是,它僅僅是一個功能請求。

對功能請求的評論提到lrzip作爲一個高效的大型文件壓縮器。我必須檢查它,但它似乎並不像我希望的那樣消除重複的文件數據。

任何幫助,歡迎。

回答

0

mark,你是怎麼試試lrzip的? 它無法檢測壓縮存檔內的重複項(默認zip);它應該與一些非壓縮檔案一起使用(在Unix世界中 - 帶有tar)或者是在沒有壓縮的情況下創建的zipfile(你將得到大小几乎等於輸入大小總和的檔案)。

你也可以嘗試任何多文件壓縮器,能夠使用solid mode(rar,7z),但是如果你的壓縮文件很大並且重複文件之間有很大的距離,這可能不起作用。 lrzip支持更大的距離。

焦油(PAX和)在Unix支持硬和軟鏈接:http://www.gnu.org/software/tar/manual/html_section/tar_71.html#SEC140

+0

我沒有在一天結束的時候嘗試lrzip。 – mark 2015-03-14 18:04:51

相關問題