Wenn ich eine große ZIP-Datei habe und ihr eine Datei hinzufüge, erstellt Windows dann eine Kopie der Datei und löscht anschließend das Original, was zu einer sehr großen „Schreibverstärkung“ führt, oder wird die Datei einfach ergänzt?
(Vielleicht spielt es eine Rolle, ob es eine SSD oder eine HDD ist?)
Antwort1
Obwohl die ZIP-Dateiformat wurde definiert, um schnelles Anhängen ohne erneutes Kopieren des gesamten Archivs zu ermöglichen. Mir ist kein Zip/7Zip-Programm bekannt, das dies kann.
Das Zip-Archiv enthält ein inneres Verzeichnis, das direkten Zugriff auf alle enthaltenen Elemente ermöglicht. Das Verzeichnis wird am Ende des Archivs gespeichert und alle Elemente, die das Verzeichnis enthalten, werden durch einen Header identifiziert.
Im Prinzip kann ein neues Element an das Archiv angehängt werden, indem es an die Archivdatei angehängt wird und dann ein neues Verzeichnis angehängt wird. Ein Computerausfall, bevor das neue Verzeichnis vollständig geschrieben und auf die Festplatte übertragen wurde, kann jedoch dazu führen, dass das Archiv am Ende Datenmüll hinterlässt.
Theoretisch lässt sich dies zwar noch wiederherstellen, indem man vom Ende des Archivs aus nach dem Header des zuletzt geschriebenen Verzeichnisses sucht, ein Programm, das lediglich erwartet, das Verzeichnis am Ende der Datei zu finden, schlägt jedoch fehl und meldet ein beschädigtes Archiv.
Ich habe das Anhängen einer Datei an ein Archiv für zwei Zip-Produkte und für 7Zip getestet und dabei vor und nach der Operation die Festplattenadresse des Archivs abgefragt. Ich habe dafür den
fsutil file queryextents
Befehl.
Keines der drei Produkte hat versucht, den Anfügevorgang zu optimieren. Alle drei haben beim Anfügen des neuen Elements das gesamte Archiv erneut kopiert.
Mein Fazit ist, dass es zwar ein solches Optimierungsprodukt geben könnte, es aber am besten ist, zu testen, ob Ihr Produkt ein solches ist. Ohne Tests sollte man standardmäßig davon ausgehen, dass das Archiv erneut kopiert wird.