I collegamenti duri sono possibili all'interno di un archivio con zip?
-
28-10-2019 - |
Domanda
Sto creando un archivio zip contenente due file identici in percorsi diversi. Il formato dell'archivio zip supporta qualcosa di simile al concetto UNIX di collegamenti duri? Con questo intendo la possibilità di archiviare il file solo una volta (salvare lo spazio), ma di indicizzare quei dati su due percorsi diversi all'interno dell'archivio ZIP.
Se il formato di file supporta questo, come potrei creare un tale archivio usando strumenti gratuiti in Ubuntu?
Soluzione
No, il Formato file zip non lo supporta. Questo perché l'intestazione del file locale contiene informazioni sul file, incluso il suo nome, seguito immediatamente dai dati compressi per il file. Non è possibile che due diverse intestazioni di file locali indicano gli stessi dati compressi.
Altri suggerimenti
Come ha detto @greg, Zip non supporta HardLink.
Ma se capisco bene, il tuo scopo è ridurre le dimensioni dell'archivio compresso. Quindi pensiamo a una soluzione alternativa.
Esegui test semplici per verificare il rapporto di compressione di diverse librerie di archivio. Ho creato due file binari identici e li ho compressi usando Zip, BZ2, RAR e 7Z.
8641969 test.bin
8641969 test2.bin
La prima volta è stato compresso solo un file. Seconda volta che sono stati compressi due file:
cerniera lampo:
$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
Conclusione: Sembra che solo 7Z faccia bene il lavoro. Considera di usarlo nella tua applicazione.
Naturalmente dovrai fare più test nel tuo ambiente con i tuoi file per vedere se è davvero ciò di cui hai bisogno. Inoltre puoi giocare con le opzioni per vedere quale livello di compressione ottieni il miglior equilibrio tra rapporto di compressione/velocità.
Gli archivi di catrame supportano collegamenti rigidi