问候大型归档文件的....压缩问题与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