Les liens durs sont-ils possibles dans une archive zip?
-
28-10-2019 - |
Question
Je crée une archive zip contenant deux fichiers identiques sur différents chemins. Le format d'archives ZIP soutient-il quelque chose qui ressemble au concept UNIX des liens durs? J'entends par là la possibilité de stocker le fichier une seule fois (enregistrer l'espace), mais d'indexer ces données blob sur deux chemins différents dans l'archive zip.
Si le format de fichier prend en charge cela, comment pourrais-je créer une telle archive en utilisant des outils gratuits dans Ubuntu?
La solution
Non, le Format de fichier zip ne prend pas en charge cela. En effet, l'en-tête de fichier local contient des informations sur le fichier, y compris son nom, suivi immédiatement par les données compressées du fichier. Il n'est pas possible pour deux en-têtes de fichiers locaux différents de pointer vers les mêmes données compressées.
Autres conseils
Comme l'a dit @Greg, Zip ne prend pas en charge les links Hardlinks.
Mais si je comprends bien, votre objectif est de réduire la taille des archives compressées. Pensons donc à une solution alternative.
Permet d'exécuter des tests simples pour vérifier le rapport de compression de différentes bibliothèques d'archives. J'ai créé deux fichiers binaires identiques et les ai compressés en utilisant ZIP, BZ2, RAR et 7Z.
8641969 test.bin
8641969 test2.bin
Première fois qu'un seul fichier a été compressé. La deuxième fois, deux fichiers ont été compressés:
ZIP *: FRANÇAIS:
$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
Rare:
$rar a -m5 test1.rar test.bin
$rar a -m5 test2.rar test.bin test2.bin
8649970 test1.rar
17299916 test2.rar
Conclusion: Il semble que seulement 7Z fasse bien le travail. Envisagez de l'utiliser dans votre application.
Bien sûr, vous devrez faire plus de tests dans votre environnement avec vos fichiers pour voir si c'est vraiment ce dont vous avez besoin. Vous pouvez également jouer avec des options pour voir à quel niveau de compression vous obtenez le meilleur rapport de compression / équilibre de vitesse.
Les archives de goudron prennent en charge les liens durs