您好...
我正在使用最新的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();
}
感谢您的帮助!(这是需要翻译的内容)