2016-06-20 2 views
0

J'essaie de lire un fichier compressé. Je le fais en utilisant la commande tar tf abc.tar.xz. Parce que la taille du fichier est de 1 To, cela prend beaucoup de temps. Je ne suis pas très familier avec le script bash. J'ai d'autres commandes aussi bien comme zcat 3532642.tar.gz | more et tar tf 3532642.tar.xz |grep --regex="folder1/folder2/folder3/folder4/" etComment lire le fichier compressé de 1 To en un temps minimum

tar tvf 3532642.tar.xz --to-command \ 
'grep --label="$TAR_FILENAME" -H folder1/folder2/folder3/folder4/ ; true' 

Mais je ne trouve beaucoup de différence entre eux en termes de temps qu'ils prennent pour exécuter le fichier pour lire son contenu.

Est-ce que quelqu'un sait comment je peux le faire en un minimum de temps pour traiter une énorme quantité de données pour un fichier compressé. Toute aide serait appréciée!!!

+2

Vous ne décompressez pas rapidement, vous pouvez accélérer ce que vous faites sur le flux après. S'il vous plaît montrer clairement ce que vous faites avec le flux décompressé. –

+0

Je veux lire le contenu du fichier compressé sans le décompresser et je veux le faire pour un fichier de 1 To. Pouvez-vous me dire comment puis-je le faire dans le temps minimum d'exécution? – MKB

+4

Il n'y aura pas de différence de temps lors de la décompression, la plus simple à utiliser est 'zcat'. –

Répondre

1

Comme rrauenza mentionne, puisque pigz peut ne pas fonctionner pour le format xz, il existe un outil similaire pour pixz parallèle, indexé XZ compression/décompression.

du man page il est évident que Pigz comprime/decommpresses utilisant des fils à utiliser plusieurs processeurs et noyaux.

Semblable à pigz, cette commande fournit également une option permettant de spécifier le nombre de threads pouvant être appelés en parallèle dans plusieurs cœurs pour obtenir des performances maximales.

-p --processes n 
Allow up to n processes (default is the number of online processors) 

Ou vous pouvez obtenir manuellement le nombre de cœurs de la commande bash getconf _NPROCESSORS_ONLN et définissez la valeur à -p.

Plus de détails de la page GitHub de pixz aussi avec des détails sur la façon de télécharger et installer

(ou)

Voulez-vous profiter d'une tar seule solution, il peut se faire que si le nom de fichier est connu avant

tar -zxOf <file-name_inside-tar> <file-containing-tar> 

avec des options comme suit: -

-f, --file=ARCHIVE 
      use archive file or device ARCHIV 

    -z, --gzip 
      filter the archive through gzip 

    -x, --extract, --get 
      extract files from an archive 

    -O, --to-stdout 
      extract files to standard output 

Peut ne pas être aussi efficace que pigz, mais fait néanmoins le travail.

+0

Mais comme rrauenza mentionné, il ne peut pas être utilisé pour l'extension .xz. Pouvez-vous suggérer anythig pour une telle situation? – MKB

+0

@MKB: Pouvez-vous essayer la solution alternative en utilisant 'tar', si cela ne fonctionne pas aussi, je vais supprimer la réponse – Inian

+0

Le travail est déjà fait en utilisant' tar' mais le problème est le temps qu'il faut pour exécuter comme je l'ai mentionné dans la description de ma question. – MKB