Terminal - ¿El comando zip incorporado tiene pérdidas?

Estoy usando BASH en la terminal de Yosemite.

¿ El zipcomando tiene pérdidas?

lo estoy usando asi

zip -er ./output.zip ./input

-e encrypt

-r recurse

Estoy tratando de evitar la compresión con pérdida al hacer una copia de seguridad de los datos.

Sería una salsa súper débil si mis copias de seguridad resultaran corruptas :(

Sé poco sobre OSX, pero según mi experiencia en Linux, recomendaría tar para la copia de seguridad. Aunque zip no tiene pérdidas, no contiene todos los metadatos.
@ v7d8dpo4 ¡Suena como una buena idea! ¿ Estás hablando tar -czf output.tar.gz /input/dir? Entonces mi pregunta es, ¿G-Zip tiene pérdidas? El zipcomando (según las páginas del manual) aparentemente no es G-Zip. Apuesto a que hay una bandera para usar algo que no sea G-Zip aunque...
Gzip no tiene pérdidas. Los únicos métodos comunes de compresión con pérdida son aquellos para tipos especiales de archivos, como JPEG y mp4. Puede agregar -py --xattrsa su comando tar para conservar los permisos y los atributos extendidos. No tienes que usar gzip. Busque en la página de manual de tar (1), en la sección "Opciones de compresión".
@v7d8dpo4 Sí, los archivos de tipo JPEG y mp4 son los que me preocupan; hay muchos archivos .aif en estos proyectos. creo que esa es la parte mas importante

Respuestas (3)

No, los archivos ZIP nunca se comprimen con pérdidas, ni siquiera sería posible.

Los algoritmos de compresión con pérdida solo funcionan para datos que pueden aproximarse y aún así ser reconocibles para los humanos. Las imágenes y el audio funcionan para esto, pero no los datos arbitrarios.

Los algoritmos de compresión ZIP toman datos arbitrarios y, sin saber qué son, los comprimen sin pérdidas al encontrar datos redundantes y mapearlos. No habría forma de saber qué parte de los datos podría aproximarse, razón por la cual el software de archivo usa compresión sin pérdidas.

El formato zip no usa compresión con pérdida, pero el zipcomando tiene pérdida en un sentido diferente: no incluye algunos tipos de metadatos de archivos específicos de Mac en el archivo. Los metadatos que se dejan son en su mayoría sin importancia. Estoy hablando de cosas como etiquetas de archivos, comentarios de Spotlight y demás. Principalmente.

Si eso no es lo suficientemente bueno para usted, puede usar ditto, con las opciones apropiadas. Aquí hay un ejemplo, tomado de la dittopágina del manual :

ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
Cuando dices metadatos específicos de Mac... Estoy usando esto para respaldar proyectos de música de Logic y Logic es propiedad de Apple, así que espero que no omita nada importante. Lo probé duplicando uno de mis proyectos y funcionó bien sin ningún tipo de corrupción.
@KolobCanyon No estoy familiarizado con el formato o los proyectos de Logic, por lo que no puedo decirlo con certeza, pero espero que estén bien sin metadatos. El mayor riesgo que se me ocurre son los archivos de alias, que se vuelven inútiles sin los metadatos que los identifican como alias. Entonces, si los proyectos usan alias dentro de sí mismos, podrían fallar. Recomiendo usar el dittoenfoque por si acaso.
IIRC, el formato ZIP tampoco puede archivar enlaces simbólicos o enlaces duros, pero presumiblemente solo los tendría dentro de un solo árbol de archivos si los hiciera usted mismo.

No, todos los métodos de compresión admitidos en el formato de archivo .zip no tienen pérdidas. Ver Wikipedia .