ご挨拶...
最新のDotNetZipを使用して、c#3.5でバックアッププログラムを作成しています。プログラムの基本は、サーバー上の場所とスパンされたzipファイルの最大サイズを指定して実行することです。そこから、指定された場所からすべてのフォルダー/ファイルをトラバースし、正確な構造を維持しながらアーカイブに追加する必要があります。また、すべてを適切な量に圧縮する必要があります。フォルダー/ファイルの特定の非圧縮コレクションは、簡単に10〜25 GBになる可能性があり、作成されるスパンファイルはそれぞれ約1GBに制限されます。
私はすべてが機能しています(DotNetZipを使用)。私の唯一の課題は、実際に起こっている競争がほとんどないか、まったくないことです。コードを単純化し、一般的にプロジェクトにどれだけ適合しているかを確認するために、「AddDirectory」メソッドを使用することにしました。周りを読んだ後、私はその決定を2番目に推測しています。
以下のコードとアーカイブ内の大量のファイルを考えると、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();
}
助けてくれてありがとう!