Solution 1 :
tar (et cpio et afio et pax et des programmes similaires) sont des formats orientés flux - ils sont destinés à être diffusés directement sur une bande ou acheminés vers un autre processus. alors qu'en théorie, il serait possible d'ajouter un index à la fin du fichier/flux, je ne connais aucune version qui le fasse (ce serait cependant une amélioration utile)
cela ne vous aidera pas avec vos archives tar ou cpio existantes, mais il existe un autre outil, dar ("archive de disque"), qui crée des fichiers d'archive contenant un tel index et peut vous donner un accès direct rapide à des fichiers individuels dans l'archive .
si dar n'est pas inclus avec votre unix/linux-dist, vous pouvez le trouver à :
http://dar.linux.free.fr/
Solution 2 :
Vous pouvez utiliser SquashFS pour de telles archives. C'est
- conçu pour être accessible à l'aide d'un pilote de fusible (bien qu'une interface traditionnelle existe)
- compressé (plus la taille du bloc est grande, plus il est efficace)
- inclus dans le noyau Linux
- stocke les UID/GID et l'heure de création
- conscient de l'endianess, donc assez portable
Le seul inconvénient que je connaisse est qu'il est en lecture seule.
http://squashfs.sourceforge.net/http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html
Solution 3 :
Bien qu'il ne stocke pas d'index, star
est censé être plus rapide que tar
. De plus, il prend en charge les noms de fichiers plus longs et offre une meilleure prise en charge des attributs de fichier.
Comme vous le savez sûrement, la décompression du fichier prend du temps et serait probablement un facteur dans la vitesse d'extraction même s'il y avait un index.
Modifier : Vous pouvez également jeter un œil à xar
. Il a un en-tête XML qui contient des informations sur les fichiers de l'archive.
À partir de la page référencée :
L'en-tête XML de Xar lui permet de contenir des métadonnées arbitraires sur les fichiers contenus dans l'archive. En plus des métadonnées de fichier unix standard telles que la taille du fichier et ses heures de modification et de création, xar peut stocker des informations telles que les bits de fichier ext2fs et hfs, les drapeaux unix, les références aux attributs étendus, les informations de Mac OS X Finder, Mac OS Fourchettes de ressources X et hachages des données du fichier.
Solution 4 :
Thorbjørn Ravn Anderser a raison. GNU tar crée des archives "cherchables" par défaut. Mais il n'utilise pas ces informations lorsqu'il lit ces archives si l'option -n n'est pas donnée. Avec l'option -n, je viens d'extraire un fichier de 7 Go d'une archive de 300 Go dans le temps nécessaire pour lire/écrire 7 Go. Sans -n, cela a pris plus d'une heure et n'a produit aucun résultat.
Je ne sais pas comment la compression affecte cela. Mon archive n'a pas été compressée. Les archives compressées ne sont pas "recherchables" car le tar GNU actuel (1.26) décharge la compression sur un programme externe.
Solution 5 :
Le seul format d'archive que je connaisse qui stocke un index est ZIP, car j'ai dû reconstruire des index corrompus plus d'une fois.