问候....
我正在使用最新的 DotNetZip 在 c# 3.5 中编写备份程序。该程序的基础是获得服务器上的位置和跨区 zip 文件的最大大小,然后运行。从那里它应该遍历给定位置的所有文件夹/文件并将它们添加到存档中,保持准确的结构。它还应该将所有内容压缩到合理的数量。给定的未压缩文件夹/文件集合很容易达到 10-25gb,创建的跨区文件每个限制为大约 1gb。
我一切正常(使用 DotNetZip)。我唯一的挑战是实际上几乎没有压缩。我选择使用“AddDirectory”方法是为了简化代码,并且通常它看起来适合我的项目。在阅读之后,我第二次猜测这个决定。
鉴于以下代码和存档中的大量文件,我是否应该在将每个文件添加到 zip 时对其进行压缩?还是应该 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();
}
感谢您的任何帮助!