¿Agregar un archivo a un archivo zip reescribirá todo el archivo?

¿Agregar un archivo a un archivo zip reescribirá todo el archivo?

Si tengo un archivo zip grande y le agrego un archivo, ¿Windows creará una copia del archivo y luego eliminará el original, lo que provocará una "amplificación de escritura" muy grande, o simplemente se agregará al archivo?

(¿Quizás importe si es un SSD o un HDD?)

Respuesta1

Aunque el Formato de archivo zip se definió para permitir agregados rápidos sin volver a copiar todo el archivo, no conozco ningún programa Zip/7Zip que lo haga.

El archivo Zip contiene un directorio interno que permite el acceso directo a cualquier elemento incluido. El directorio se almacena al final del archivo y todos los elementos, incluido el directorio, se identifican mediante un encabezado.

En principio, se puede agregar un nuevo elemento al archivo agregándolo al archivo comprimido y luego agregando un nuevo directorio. Sin embargo, una falla en la computadora antes de que el nuevo directorio esté completamente escrito y vaciado en el disco, puede dejar el archivo con basura al final.

Si bien en teoría esto todavía se puede recuperar escaneando desde el final del archivo en busca del encabezado del último directorio escrito, un programa que sólo espera encontrar el directorio al final del archivo fallará y anunciará un archivo corrupto.

Probé agregar un archivo a un archivo para dos productos Zip y para 7Zip, consultando la dirección del disco del archivo antes y después de la operación. Usé para eso el fsutil file queryextents dominio.

Ninguno de los tres productos ha intentado optimizar la operación de adición. Los tres han vuelto a copiar el archivo completo al agregar el nuevo elemento.

Mi conclusión es que, si bien puede existir un producto de optimización, es mejor probar si el suyo lo es. Sin realizar pruebas, la suposición predeterminada debería ser que se volverá a copiar el archivo.

información relacionada