問候大型歸檔文件的....壓縮問題與DotNetZip
我在C#3.5編寫的備份程序,使用興田最新DotNetZip。該程序的基礎知識將被賦予一個服務器上的位置和一個跨越的zip文件的最大大小,然後去。從那裏它應該遍歷給定位置的所有文件夾/文件,並將它們添加到存檔中,保持確切的結構。它也應該壓縮一切合理的數量。一個給定的未壓縮的文件夾/文件集合可以很容易地爲10-25gb,創建的跨文件被限制在每個大約1gb。
我有一切工作(使用DotNetZip)。我唯一的挑戰就是實際發生的事情很少或根本沒有。爲了簡化代碼,我選擇使用「AddDirectory」方法,並且一般來說它看起來好像適合我的項目。經過閱讀,我第二次猜測這個決定。
考慮下面的代碼並存檔中的大量文件,我應該壓縮每個文件,因爲它被添加到壓縮?或者Adddirectory方法應該提供相同的壓縮?
我已經嘗試了Ionic.Zlib.CompressionLevel提供的每個級別的壓縮,但似乎沒有任何幫助。我應該考慮使用外部壓縮算法並將其流式傳輸到我的DotNetZip文件中嗎?
using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(root.FullName);
if (zipPassword.Length > 0)
zip.Password = zipPassword;
float size = zipGbSize * 1024 * 1024 * 1024;
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.AddProgress += new EventHandler<AddProgressEventArgs>(Zip_AddProgress);
zip.ZipError += new EventHandler<ZipErrorEventArgs>(Zip_ZipError);
zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G");
zip.MaxOutputSegmentSize = (int)size; //in gig
zip.Name = archiveDir.FullName + @"\Task_" + taskId.ToString() + ".zip";
zip.Save();
}
感謝您的幫助!
由於該限制(z01,z02,z03 ....),正在拆分zip文件。每個分割是1GB,以及也是大約1GB的「父」壓縮。 – David 2011-01-26 16:01:53