J'utilise tar
pour archiver un groupe de très gros bz2
fichiers (multi-Go) .
Si j'utilise tar -tf file.tar
pour répertorier les fichiers dans l'archive, cela prend beaucoup de temps (~ 10-15 minutes).
De même, il cpio -t < file.cpio
faut autant de temps pour terminer, plus ou moins quelques secondes.
En conséquence, la récupération d'un fichier à partir d'une archive (via tar -xf file.tar myFileOfInterest.bz2
par exemple) est aussi lente.
Existe-t-il une méthode d'archivage qui conserve un "catalogue" facilement accessible avec l'archive, afin qu'un fichier individuel dans l'archive puisse être récupéré rapidement?
Par exemple, une sorte de catalogue qui stocke un pointeur sur un octet particulier dans l'archive, ainsi que la taille du fichier à récupérer (ainsi que toute autre information spécifique au système de fichiers).
Existe-t-il un outil (ou argument vers tar
ou cpio
) qui permet une récupération efficace d'un fichier dans l'archive?
Vous pouvez utiliser SquashFS pour de telles archives. C'est
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
la source
Bien qu'il ne stocke pas d'index, il
star
est censé être plus rapide quetar
. De plus, il prend en charge les noms de fichiers plus longs et prend mieux en charge les attributs de fichier.Comme je suis sûr que vous le savez, 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 voudrez peut-être également y jeter un œil
xar
. Il a un en-tête XML qui contient des informations sur les fichiers dans l'archive.Depuis la page référencée:
la source
star
is down ......Thorbjørn Ravn Anderser a raison. GNU tar crée des archives "recherchables" 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 à partir 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 donné 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 vers un programme externe.la source
Le seul format d'archive que je connaisse qui stocke un index est ZIP, car j'ai dû reconstruire les index corrompus plus d'une fois.
la source
Il n'indexe pas à ma connaissance, mais j'utilise le vidage et la restauration avec des fichiers volumineux, et la navigation dans l'arborescence de restauration en mode interactif pour sélectionner des fichiers aléatoires est TRÈS rapide.
la source
Vous pouvez utiliser le format d'archivage / compression 7z (7zip) si vous avez accès au
p7zip-full
package.Sur Ubuntu, vous pouvez utiliser cette commande pour l'installer:
Pour créer une archive que vous pouvez utiliser
7z a <archive_name> <file_or_directory>
et si vous ne voulez pas compresser les fichiers et souhaitez simplement les "stocker" tels quels, vous pouvez utiliser l'-mx0
option comme:Vous pouvez ensuite extraire les fichiers en utilisant
7z e
:Ou vous pouvez lister l'index de l'archive avec le
7z l
qui est pratique pour rechercher avecgrep
:C'est également la
t
possibilité de tester l'intégrité,u
d'ajouter / mettre à jour un fichier dans l'archive etd
de supprimer un fichier.REMARQUE IMPORTANTE
N'utilisez pas le format 7zip pour les sauvegardes du système de fichiers Linux car il ne stocke pas le propriétaire et le groupe des fichiers contenus.
la source
Je crois que GNU tar est capable de faire ce que vous voulez, mais je ne trouve pas de ressource définitive le disant.
Dans tous les cas, vous avez besoin d'un format d'archivage avec un index (car cela vous permettra de faire ce que vous voulez). Je ne crois pas que les fichiers ZIP peuvent devenir aussi gros, malheureusement.
la source