これが誰かに役立つことを願っています。すべてのzipモードをテストし、2つのデータセットでベンチマークしました。最初の1つは小さい(〜30 MB)、もう1つは大きい(〜1.5 GB)。それらはさまざまな種類のファイルで構成されていたため、実際のシナリオに可能な限り近いものになります。各データセットに対して、「比例」と「完全」の2つのテスト方法を実行しました。両方のテストは、平均を得るために次々に3回繰り返されました。これらの結果はマシンによって異なる場合がありますが、それでも開始するのに適した場所だと思います。
独自の専用バックアップソリューションを作成しようとしているため、2つの方法でテストを行いました。比例方式では、より多くのzipファイルが作成されますが、必要に応じて、より小さなデータパッケージを転送できます。変更されたものだけを置き換えます。それよりも複雑ですが、今は重要ではありません。
完全な方法は、フォルダ全体をまっすぐに圧縮することです。
圧縮率の計算:
size_difference = source_size --compressed_size
Compression_ratio =(size_difference * 100.0)/ source_size
基本的に、その数が多いほど良いです。
各zipアーカイブは次のように初期化されました。
# Mode tests
with zipfile.ZipFile(target_zip, 'w', compression_method) as ziph:
# Level tests
with zipfile.ZipFile(target_zip, 'w', compression_method, compresslevel=level) as ziph:
結果は次のとおりです。
方法に関係なく、最適な圧縮モードはZIP_DEFLATEDのようです。アーカイブサイズが小さいだけでZIP_LZMAモードが得られましたが、それは%のほんの一部であり、大きなデータセットの場合は約8倍長くかかりました。
さらに、同じデータセットと方法でさまざまなレベルの圧縮を試しました。今回を除いて、レベルごとに1つの実行しかありませんでした。
ZIP_DEFLATEDとZIP_BIP2には同様の圧縮機能があるように見えますが、2番目の圧縮機能ははるかに低速です。大規模なデータセットの場合、1または2の圧縮レベルで十分です。それ以上増やしても、最終的なファイルサイズに大きな影響はありません。ワークロードで多くの「小さな」zipファイルが必要な場合は、レベル9を使用することをお勧めします。これにより、高い圧縮率が得られますが、レベル1とほぼ同じ時間がかかります。