web-dev-qa-db-fra.com

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

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 googler, 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 une feuille de triche de Nice.

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

71
deadprogrammer

Ou que diriez-vous d'utiliser Shell avec des fonctionnalités de complétion avancées (telles que 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".

63
ADEpt

Résumé de l'option Tar

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

  • x - extraire des fichiers
  • c - crée une archive
  • t - liste des fichiers
  • v - verbose (liste des fichiers au fur et à mesure de leur traitement)
  • j - utilise la compression bz2
  • z - utilise la compression gz
  • f - lit ou écrit 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/*

39
Adam Pierce

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

unp filename.tar.gz

... et ça extrait tout. Fonctionne avec tous les fichiers compressés 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).

22
Vicent Marti

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 de Nice, 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
 }
7
Ali Mezgani

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

6
Jeremy Ruten

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 xv par tar tv pour 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".

3
Logan

L'homme est ton ami.

man tar

3
madlep

Je lis toujours les commandes dans ma tête en tapant

compressez le fichier zip

tar cvzf FILE

extraire le fichier Zip détaillé

tar xvzf FILE
2
feeela

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 - )
2
Jauder Ho

90% du temps que je viens d'utiliser

tar -xvf file.*  

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

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

1
ramayac

J'utilise un script Perl appelé aunpack, qui fait partie du projet atool , depuis de nombreuses années. Donc, vous lancez simplement: aunpack foo.{Zip/tar.gz/tar.bz2} et il fait ce qu'il faut en fonction de l'extension du fichier.

L’autre avantage de aunpack est qu’elle ne pollue pas le répertoire en cours avec beaucoup de fichiers. Disons qu'il y a 20 fichiers dans foo.Zip qui ne sont pas dans un sous-répertoire. Au lieu de cracher ces fichiers dans le répertoire en cours, aunpack créera un sous-répertoire foo et y placera tous les fichiers.

1
Dave Dribin

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.


1
Lazer

Tout ce dont vous avez besoin est tar x (extrait de stdin), tar c (tar à stdout), gzip -c (gzip de stdin à stdout; -1 à -9 pour les niveaux de compression; idem 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 des 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%
1
porty

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

Pour illustrer mon propos, je vais utiliser un exemple d'extraction de fichier.tar.gz:

Puisqu'il s'agit d'un fichier tar, vous devriez utiliser le programme tar. Ensuite, ce sont les options:

  1. x puisque vous voulez e x tractez.
  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
Espen

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, j = bzip2 m’est coincé dans ma tête).

Parfois, vous rencontrez des fichiers compressés mais non tarés dans lesquels vous ajoutez un à n'importe quel type de compression. par exemple. g un Zip ou b un Zip2.

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

0
mmacaulay

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

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

vous pouvez ensuite utiliser untar foo.tar.gz pour extraire et dotar foo.bar pour compresser. vous pouvez utiliser d’autres alias dont vous vous souviendrez facilement.

0
foerno