大きな zip ファイルがあり、そこにファイルを追加すると、Windows はファイルのコピーを作成してから元のファイルを削除するため、非常に大きな「書き込み増幅」が発生しますか、それともファイルに追加されるだけですか?
(SSD か HDD かによっても違うのでしょうか?)
答え1
しかし、 Zipファイル形式 アーカイブ全体を再コピーせずに高速追加を可能にするように定義されていますが、それを実行する Zip/7Zip プログラムは知りません。
Zip アーカイブには、含まれているすべてのアイテムに直接アクセスできる内部ディレクトリが含まれています。ディレクトリはアーカイブの最後に保存され、ディレクトリを含むすべてのアイテムはヘッダーによって識別されます。
原則として、アーカイブに新しい項目を追加するには、まずアーカイブ ファイルに新しい項目を追加し、次に新しいディレクトリを追加します。ただし、新しいディレクトリが完全に書き込まれてディスクに書き出される前にコンピュータに障害が発生すると、アーカイブの最後にゴミが残る可能性があります。
理論上は、アーカイブの末尾から最後に書き込まれたディレクトリのヘッダーをスキャンすることでこれを回復できますが、ファイルの末尾でディレクトリを見つけることだけを期待するプログラムは失敗し、アーカイブが破損していることを通知します。
私は2つのZip製品と7Zipでアーカイブにファイルを追加するテストを行い、操作の前後にアーカイブのディスクアドレスを照会しました。そのために
fsutil file queryextents
指示。
3 つの製品はいずれも追加操作の最適化を試みていません。3 つとも、新しいアイテムを追加するときにアーカイブ全体を再コピーしています。
私の結論は、そのような最適化製品が存在する可能性はありますが、自分の製品がそのような製品であるかどうかをテストするのが最善だということです。テストを行わない場合、アーカイブが再コピーされるというのがデフォルトの想定になります。