Untar, ungz, gz, tar - comment vous souvenez-vous de toutes les options utiles?


76

Je suis presque sûr que je ne suis pas le seul à avoir le problème suivant: chaque fois que je dois décompresser un fichier dans * nix, je ne me souviens pas de tous les commutateurs, et je finis par le rechercher sur Google, ce qui est surprenant compte tenu de la fréquence à laquelle je dois fais ça.

Avez-vous un bon aide-mémoire de compression? Ou que diriez-vous d'un mnémonique pour tous ces vilains commutateurs dans le goudron?

Je fais de cet article un wiki afin que nous puissions créer ici un bon aide-mémoire.

Oh, et à propos des pages de manuel: elles ne sont d'aucune utilité, c'est pour savoir comment décompresser un fichier.


1
utilisez les pages de manuel, vous n'avez pas besoin de créer un wiki, vous n'avez plus qu'à vous souvenir de la commande man :-) man (1)
Florenz Kley

9
Je me souviens de l'eXtract Zee File
Canadian Luke

Créer un fichier d'amarrage Zee pourrait être approprié pour créer un
fichier

Réponses:


65

Ou que diriez-vous d'utiliser le shell avec des fonctionnalités de complétion avancées (comme zsh ou de nouvelles versions de bash) qui complèteront les options pour vous, avec une aide complète? :))

En ce qui concerne tar: il suffit de regarder le clavier "qwerty". Il y a des lettres "zxcvf" côte à côte. Vous avez besoin des fichiers "tar czvf file.tar.gz" ou "tar xzvf fichier.tar.gz".


Des accessoires pour avoir réellement répondu à la question :)

Maintenant, c’est un bon conseil "qwerty"! :)

fringant génial!
deadprogrammer

2
Un autre conseil est que l' zoption (ou l' joption pour les .bz2fichiers) n'est pas nécessaire lors de l'extraction avec les versions modernes de tar. Il décompresse automatiquement le fichier.
Nate

10
J'ai utilisé tar environ dix milliards de fois et je n'ai jamais remarqué que toutes les options les plus couramment utilisées sont proches les unes des autres sur le clavier. headmack
Tyler McHenry Le

41

Résumé des options de goudron

Vous êtes invités à éditer ceci pour ajouter plus de commutateurs ésotériques mais voici les bases:

  • x - extraire des fichiers
  • c - créer une archive
  • t - liste des fichiers
  • v - verbose (liste les fichiers au fur et à mesure de leur traitement)
  • j - utilise la compression bz2
  • z - utilise la compression gz
  • f - lire ou écrire des fichiers sur le disque

Exemples

Décompressez un fichier tar.gz: tar zxf tarball.tar.gz

Décompressez un fichier tar.bz2: tar jxf tarball.tar.bz2

Créez un fichier tar.gz: tar zcvf tarvall.tar.gz mdir / *


23

Il y a un petit script Perl appelé "unp".

unp filename.tar.gz

... et ça extrait tout. Fonctionne avec n'importe quel fichier compressé tant que vous avez les bons fichiers binaires. Et vous oubliez tout simplement la syntaxe ou n'importe laquelle de ces conneries. Vérifiez les référentiels de votre distribution Linux. Il devrait être là (au moins sur Arch, Debian et Ubuntu).


Même après avoir utilisé le goudron pendant assez longtemps, j'ai encore besoin de Google pour les drapeaux stupides. Unp est la voie à suivre.
Yada

8

Vraiment, avec un usage fréquent, je fais la différence entre extraire des données (x) et les compresser (c):

Extraire:

tar xzf data.tgz

Pour compresser:

tar czf data.tgz

De plus, vous pouvez ajouter deux fonctions à votre .bashrc:

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}

Il existe une autre fonction d’extrait intéressante, elle détecte l’extension de votre fichier compressé et fait le travail pour vous:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }

5

Il suffit de taper tar --helpet il y a votre feuille de triche.


12
sérieusement, avez-vous déjà essayé de lire cette page de manuel?
deadprogrammer

C'est peut-être un peu illisible et long, mais je pense que cela fonctionne bien pour simplement rechercher le nom d'une option. Vous pouvez également grep pour l'option que vous cherchez, par exemple 'tar --help | extrait de grep '.
Jeremy Ruten

1
Génial. Et ensuite, vous devez parcourir une page de manuel qui (parmi les éléments que vous recherchez) vous indique des tonnes de commandes et d’options de streamer archaïques que personne ne requiert, à l’exception du développeur.

2
Je ne vois vraiment pas ce qui est si difficile à ce sujet. Pour extraire une archive, il suffit de trouver l'option d'extrait et d'ajouter -x à votre commande. Si vous voulez qu'il soit détaillé, recherchez cette option et ajoutez av pour obtenir -xv. Continuez ensuite jusqu'à ce que vous obteniez la commande exacte souhaitée. Il a même des exemples de commandes pour les opérations courantes.
Jeremy Ruten

1
Jeremy, le vrai problème est que vous ne connaissez pas toujours le vocabulaire approprié. En tant que tel, il est facile de se perdre et de trouver des options similaires sans les faire fonctionner. Ensuite, vous devez en placer (certains) dans le bon ordre. Ceci est non-trivial pour quelqu'un migrant hors de Windows. D'autant plus s'ils ne connaissaient pas les scripts dans Windows.
Nazadus

3

Si vous ne parvenez pas à vous souvenir des options tar, essayez d’utiliser les tuyaux:

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

Remplacez tar xvpar tar tvpour afficher uniquement le contenu de l'archive.

Personnellement, j'utilise les mnémoniques suivants:

  • t, x ou c pour "tabuler", "xtracter" ou "créer", respectivement.
  • v pour lister tous les fichiers.
  • z, j ou rien pour tar.gz, tar.bz2 ou .tar, respectivement.
  • f pour donner un nom de fichier, par rapport à l'utilisation par défaut de stdin / stdout ou d'un lecteur de bande.

Bien que "j" et "bzip2" semblent n'avoir rien à faire l'un avec l'autre, je trouve qu'il est facile de se souvenir de cette exception.

De plus, je trouve drôle que Google ait remplacé "man tar".


Vous devriez prendre l’habitude de toujours fournir l’ foption: ce n’est que récemment que les distributions de tar default à f -, l’historique par défaut est f /dev/rmt0similaire. Après tout, tar est l’ARchiver de bande.
éphémient

1
Qu'est-ce que la tabulation?
Claudiu


2

Les trois opérations les plus fréquemment utilisées :

--create -c

Créer une nouvelle archive tar.

--list -t

Listez le contenu d'une archive.

--extract -x

Extrayez un ou plusieurs membres d'une archive.


Les cinq opérations avancées de tar :

--append -r

Ajoutez de nouvelles entrées à une archive existante.

--update -u

Ajoutez des copies plus récentes des membres de l'archive à la fin d'une archive, si elles existent.

--concatenate --catenate -A

Ajoutez une ou plusieurs archives préexistantes à la fin d'une autre archive.

--delete

Supprimer des éléments d'une archive (ne fonctionne pas sur des bandes).

--compare --diff -d

Comparez les membres de l'archive à leurs homologues du système de fichiers.



2

Je lis toujours les commandes dans mon esprit en tapant

compresser le fichier zip prolixe

tar cvzf FILE

extraire le fichier zip prolixe FILE

tar xvzf FILE

2

Je fais ce qui suit

Pour créer un goudron:

tar czvf foo.tar.gz <files to be included>

Pour défaire:

tar zxvf foo.tar.gz

Ceux-ci devraient être les principaux commutateurs dont vous devez vous soucier:

c - create
z - compress/uncompress
x - extracte
v - verbose
f - file

Vous pouvez faire des choses plus sophistiquées comme tar et untar inline pendant que vous essayez de déplacer des fichiers entre répertoires comme ceci:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )

1

90% du temps que je viens d'utiliser

tar -xvf file.*  

x: extraire
v: être prolixe (facultatif)
f: fichier d'entrée (tar, gz, bzip2, etc ...)

Facile, hein? :)
Utilisez Fileroller ou Ark si vous n'êtes pas dans une console.


Jusqu'à présent, j'utilisais fileroller, mais pour le moment je n'ai pas de chance car ma version utilise 1,1 Go de mémoire.
Andrew Grimm

1

J'utilise un script Perl appelé aunpack, faisant partie du projet atool , depuis de nombreuses années maintenant. Donc, vous venez de lancer: aunpack foo.{zip/tar.gz/tar.bz2}et il fait la bonne chose en fonction de l'extension de fichier.

L'autre avantage aunpackest qu'il ne pollue pas le répertoire actuel avec beaucoup de fichiers. Supposons que 20 fichiers foo.zipne figurent pas dans un sous-répertoire. Au lieu de cracher ces fichiers dans le répertoire en cours, aunpackcréera un foosous-répertoire et y mettra tous les fichiers.


1

Tout ce que vous avez besoin est tar x(extrait de stdin), tar c(goudron à stdout), gzip -c(gzip de stdin stdout, -1à -9des niveaux de compression, même pour bzip2) et gunzip -c(gunzip de stdin stdout) - tout le reste est des tuyaux.

Pour tar et gzip:

$ tar c * | gzip -c > out.tar.gz

Décompresser et décompresser

$ gunzip -c < out.tar.gz | tar x

Si vous voulez de jolies barres de progression, utilisez pv, qui est similaire à cat mais affiche les barres de progression:

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%

0

Je pense qu’il est facile de penser à ce que vous voulez et pas seulement à des lettres.

Pour illustrer cela, je vais utiliser un exemple d’extraction de fichier.tar.gz:

Comme il s’agit d’un fichier tar, vous devez utiliser le programme tar. Ensuite, ce sont les options:

  1. x depuis que vous voulez e x tract.
  2. z si le fichier se termine par .gz. (gz est après tar dans le nom du fichier) Cette option gunzip l'archive.
  3. f pour le fichier suivi du nom de l'archive.

Ceci est démontré dans l'exemple ci-dessous:

tar xzf file.tar.gz

0

Je me souviens que c’est toujours "tar XXvf", où les deux X sont

  • x pour e X tract ou c pour C reate et,
  • soit z = gzip, j = bzip2 (gzip est plus commun, c’est donc habituellement z, quelle que soit la raison pour laquelle j = bzip2 m’est coincé dans ma tête).

De temps en temps, vous rencontrez des fichiers compressés, mais pas des fichiers tarés, que vous ajoutez peu importe le type de compression. par exemple, g un zip ou b un zip2.

Si quelque chose, j'oublie le 2 et parfois tapez "bzip".


0

vous pouvez également créer un alias. ajoutez simplement ces deux lignes à votre ~/.bash_aliasesfichier:

alias untar="tar xvf"
alias dotar="tar cvf"

vous pouvez ensuite utiliser untar foo.tar.gzpour extraire et dotar foo.barpour compresser. vous pouvez utiliser d’autres alias dont vous vous souviendrez facilement.


0

C réer Z ip à F ilename

tar -czf myfile.tar.gz myfile.sql

e X tract Z ip avec F ilename

tar -xzf myfile.tar.gz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.