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.

programmeur mort
la source
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".

ADEpt
la source
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 / *

anon
la source
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).

Vicent Marti
la source
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
 }
Anon
la source
5

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

Jeremy Ruten
la source
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".

Logan
la source
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
3

L'homme est ton ami.

man tar

madlep
la source
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.


Lazer
la source
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
Feelela
la source
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 - )
anon
la source
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.

ramayac
la source
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.

Dave Dribin
la source
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%
porty
la source
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
Espen
la source
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".

mmacaulay
la source
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.

foerno
la source
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
littledynamo
la source