Existe-t-il une solution d'archivage parallèle des fichiers?
Tar, c'est bien, mais je n'utilise pas d'archives sur bande, et il est plus important pour moi que l'archivage se fasse rapidement (avec une compression telle que bzip2) puisque j'ai smp.
performance
tar
archive
supercheetah
la source
la source
zip
que pouvoir gérer des répertoires: |tar
archives, puis compresser le paquet en utilisant un compresseur de fichiers (commegzip
,pigz
, etc.). Vous pouvez le faire en deux étapes, mais également en une seule , car ils peuvent travailler sur des flux de données à partir d'entrées / sorties standard. Les résultats sont très similaireszip
, mais plus polyvalents.Réponses:
Je pense que vous cherchez pbzip2:
Consultez la page d'accueil du projet ou consultez votre référentiel de paquets préféré.
la source
pigz
etpxz
pour les implémentations parallèles degzip
etxz
. Vous pouvez compresser en utilisant une commande commetar c dir | pigz -c > dir.tar.gz
et décompresser en utilisantpigz -cd dir.tar.gz | tar xf -
.tar -cf dir.tar.gz -I pigz dir
ettar -xf dir.tar.gz -I pigz
. Aussixz
est fileté: utiliserXZ_OPT=-T0 tar -cJf dir.tar.gz dir
etXZ_OPT=-T0 tar -xJf dir.tar.gz
.7zip peut fonctionner sur plusieurs threads lorsque l'
-mmt
indicateur est spécifié, mais uniquement lors de la compression dans 7z-archives, qui offrent une excellente compression mais sont généralement plus lents que zip pour créer des archives. Faites quelque chose comme ça:la source
L'OP a posé des questions sur l'archivage parallèle et non sur la compression parallèle.
Si le matériel source provient d'un système de fichiers où différents répertoires / fichiers peuvent se trouver sur différents disques, ou même d'un seul disque rapide dépassant la vitesse de saisie du ou des outils de compression, il pourrait s'avérer avantageux de disposer de plusieurs flux d'entrée. entrer dans les couches de compression.
La question qui se pose est la suivante: à quoi ressemble le résultat d’une archive parallèle? Ce n'est plus un simple descripteur de fichier /
stdout
, mais un descripteur de fichier par thread.Un exemple de ceci jusqu’à présent est le mode de vidage parallèle de Postgresql
pg_dump
, dans lequel il est vidé dans un répertoire, les threads travaillant sur l’ensemble des tables à sauvegarder (la file de travail avec plusieurs threads consommant la file).Je ne suis pas sûr qu'il y ait des archiveurs parallèles qui soient courants. Il y avait un hack pour Solaris Tar à utiliser sur ZFS: http://www.maier-komor.de/mtwrite.html
Certains outils de sauvegarde dédiés permettent d'exécuter plusieurs threads, mais beaucoup d'autres ne font que diviser la charge de travail par répertoire à un niveau élevé.
la source
remplacez-le
pigz
par votre programme de compression parallèle préféré. La raison d'utilisertar
est parce qu'il peut stocker le propriétaire, groupe, autorisations. Ces métadonnées sont souvent utiles (par exemple, restaurer une arborescence de répertoires dans un système complexe).la source
-I
option, qui est identique à--use-compress-program
. Ainsi, par exemple,tar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."
peut être appliqué à l’option multithread en utilisantpigz
astar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo..."
. Ceci est la meilleure, la réponse la plus appropriée, IMHO. Merci @uDude! :)pigz est une implémentation parallèle de gzip, mais ne peut réellement utiliser que plusieurs processeurs pour la compression, pas la décompression.
la source
pigz
semble réellement être capable d'utiliser plusieurs threads également lors de la décompression. Essayez de comparer les sorties detime tar xf dir.tar.gz
et detime pigz -cd dir.tar.gz | tar xf -
(mon processeur 4 cœurs prend un peu moins de la moitié du temps).time
sur un pipeline ne fera que chronométrer la première commande. D'après lapigz
documentation : "La décompression ne peut pas être mise en parallèle, du moins sans des flux de déflation spécifiques préparés à cet effet. Par conséquent, pigz utilise un seul thread (le thread principal) pour la décompression, mais créera trois autres threads pour la lecture, écriture et vérification des calculs, ce qui peut accélérer la décompression dans certaines circonstances. "tar
est simplement un format d’archive très efficace pour dupliquer exactement les fichiers et préserver l’arborescence de répertoires et les attributs de fichier d’origine. TAR est très utile pour les sauvegardes, car tout est préservé. J'utilisepbzip2
pour compresser les archives tar que j'utilise pour les sauvegardes du système avec de très bons résultats.Cette commande devrait faire l'affaire.
pbzip2
peut être remplacé par un autre utilitaire de compression, mais sachez que la compression LZMA (comme pxz) utilise une tonne de RAM lors de la compression / décompression de fichiers volumineux (j'ai essayé d'exécuter 8 threads avec 8 Go de RAM et pxz a commencé à permuter sur le disque).la source
Un autre concurrent est
lbzip2
. C'est assez similaire à pbzip2la source
En ce qui concerne la compression, la
xz
version 5.2 prend en charge la compression parallèle via l’-T
option.la source