create - zip linux
Archivos Zip corruptos de más de 4 gigabytes. Sin advertencias ni errores. ¿Perdí mis datos? (4)
Creé un montón de archivos zip en mi computadora (Mac OS X) usando un comando como este:
zip -r bigdirectory.zip bigdirectory
Luego, guardé estos archivos zip en algún lugar y borré los directorios originales.
Ahora, cuando intento extraer los archivos zip, obtengo este tipo de error:
$ unzip -l bigdirectory.zip
Archive: bigdirectory.zip
warning [bigdirectory.zip]: 5162376229 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [bigdirectory.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
Desde entonces, he descubierto que esto podría deberse a que zip no puede manejar archivos de un tamaño determinado, tal vez 4 conciertos. Al menos lo leí en alguna parte.
Pero, ¿por qué el comando zip me permite crear estos archivos? El archivo zip en cuestión es de 9457464293 bytes y me permite hacer muchos más como este sin ningún error.
Claramente puede crear estos archivos.
Realmente espero que mis archivos no se pierdan. Aprendí mi lección y en el futuro revisaré mis archivos antes de eliminar los archivos originales, y probablemente también use otro formato de archivo como tar / gzip.
Por ahora sin embargo, ¿qué puedo hacer? Realmente necesito mis archivos.
Actualizar
Algunas personas han sugerido que mi herramienta de unzip
no es compatible con archivos lo suficientemente grandes (lo cual es extraño, porque usé el zip
OS X zip
y unzip
). En cualquier caso, instalé un nuevo unzip
de homebrew
, y he aquí que ahora obtengo un error diferente:
$ unzip -t bigdirectory.zip
testing: bigdirectory/1.JPG OK
testing: bigdirectory/2.JPG OK
testing: bigdiretoryy/3.JPG OK
testing: bigdirectory/4.JPG OK
:
:
file #289: bad zipfile offset (local header sig): 4294967295
(attempting to re-compensate)
file #289: bad zipfile offset (local header sig): 4294967295
file #290: bad zipfile offset (local header sig): 9457343448
file #291: bad zipfile offset (local header sig): 9457343448
file #292: bad zipfile offset (local header sig): 9457343448
file #293: bad zipfile offset (local header sig): 9457343448
:
:
Esto es realmente preocupante porque necesito que me devuelvan estos archivos. Y definitivamente no hubo errores al crear este archivo zip con la herramienta zip
del sistema. De hecho, hice varios de estos al mismo tiempo y ahora todos están mostrando el mismo problema.
Si el archivo está realmente dañado, ¿cómo lo arreglo?
O, si no está dañado, ¿cómo lo extraigo?
Prueba 7z x
Tuve el mismo problema con unzip %x
en Linux para un archivo .zip
más de 4GB, compuesto por un only DEFLATED entries can have EXT descriptor
error de only DEFLATED entries can have EXT descriptor
.
El comando 7z x
resolvió todos mis problemas sin embargo.
Sin embargo, tenga cuidado, el comando 7z x
extraerá todos los archivos con una ruta en el directorio actual. La opción -o
permite especificar un directorio de salida.
Descomprimir debajo de 6 aparentemente falla, use
jar -xf <zipfile>
si tiene java instalado, o aún otro descomprimir antes de escribir el archivo.
Consulte: https://serverfault.com/questions/235139/how-to-unzip-files-bigger-than-4gb
Me enfrenté exactamente al mismo problema cuando intenté unzip
archivos zip de tamaños enormes (~ 7GB). Estaba seguro de que no había ningún error al copiar los archivos zip en el servidor. (Lo verifiqué con rsync
).
Dependiendo de su situación, la solución es:
1) Si está haciendo esto en una máquina local, haga clic con el botón derecho en el archivo zip y proporcione Extract Here
, esto funcionará para archivos (.zip) de cualquier tamaño.
2) Si sus archivos zip están en un servidor remoto, primero cargue el sistema de archivos del servidor localmente usando sftp
( sftp://[email protected]
). Después de eso, simplemente navegue hasta el directorio y vuelva a hacer lo mismo que hizo en (1). Es decir, haga clic derecho en el archivo zip y extraerlo.
Puede que no sea la mejor solución, pero esa es una forma de hacerlo.
Tuve un problema similar al hacer una copia de seguridad de un directorio de 12GB antes de realizar un formato de disco duro. Curiosamente, usé el mismo comando que tú.
Leí alrededor y encontré sugerencias para ejecutar:
zip -F
y
zip -FF
para tratar de arreglar el archivo.
Lamentablemente estos no funcionaron y todavía recibí errores.
Después de mirar un poco más alrededor, encontré el comando ídem y funcionó perfectamente en mi archivo zip original (sin tocar):
ditto -x -k original-file.zip dst-directory
-x to extract an archive
-k Specifies it to be a PKZip archive instead of the default CPIO
Después de usar este comando, extraje con éxito todos los archivos.