¿Son posibles los enlaces duros dentro de un archivo zip?
-
28-10-2019 - |
Pregunta
Estoy creando un archivo zip que contiene dos archivos idénticos en diferentes rutas. ¿El formato de archivo ZIP admite algo parecido al concepto Unix de enlaces duros? Con esto me refiero a la capacidad de almacenar el archivo solo una vez (guardar espacio), pero indexar ese blob de datos en dos rutas diferentes dentro del archivo ZIP.
Si el formato de archivo admite esto, ¿cómo podría crear un archivo de este tipo usando herramientas gratuitas en Ubuntu?
Solución
No, el Formato de archivo zip no admite esto. Esto se debe a que el encabezado del archivo local contiene información sobre el archivo, incluido su nombre, seguido inmediatamente por los datos comprimidos para el archivo. No es posible que dos encabezados de archivos locales diferentes apunten a los mismos datos comprimidos.
Otros consejos
Como dijo @Greg, Zip no es compatible con los enlaces duros.
Pero si entiendo bien, su propósito es reducir el tamaño del archivo comprimido. Así que pensemos en una solución alternativa.
Ejecutemos pruebas simples para verificar la relación de compresión de diferentes bibliotecas de archivo. He creado dos archivos binarios idénticos y los comprimí usando ZIP, BZ2, RAR y 7Z.
8641969 test.bin
8641969 test2.bin
La primera vez que solo se comprimió un archivo. La segunda vez se comprimieron dos archivos:
CÓDIGO POSTAL:
$zip -9 test1.zip test.bin
$zip -9 test2.zip test.bin test2.bin
8636837 test1.zip
17273654 test2.zip
Bzip2:
$export BZIP=--fast
$tar cjf test1.tbz test.bin
$tar cjf test2.tbz test.bin test2.bin
8694997 test1.tbz
17389167 test2.tbz
7Z:
$7z a -mx=9 test1.7z test.bin
$7z a -mx=9 test2.7z test.bin test2.bin
8705285 test1.7z
8707054 test2.7z
Rar:
$rar a -m5 test1.rar test.bin
$rar a -m5 test2.rar test.bin test2.bin
8649970 test1.rar
17299916 test2.rar
Conclusión: Parece que solo 7Z hace el trabajo bien. Considere usarlo en su aplicación.
Por supuesto, deberá hacer más pruebas en su entorno con sus archivos para ver si realmente es lo que necesita. También puede jugar con opciones para ver en qué nivel de compresión obtiene la mejor relación de compresión/equilibrio de velocidad.
Archivos de alquitrán admite enlaces duros