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

Je suis sûr que je ne suis pas le seul avec 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 surprend compte tenu de la fréquence à laquelle j'ai besoin faire cela.

Avez-vous une bonne triche de compression? Ou que pensez-vous d'une mnémonique pour tous ces commutateurs méchants dans le goudron?

Je fais de cet article un wiki pour que nous puissions créer une belle fiche de triche ici.

Oh, et à propos des pages man: il y a une chose pour laquelle ils ne sont pas utiles, c'est pour comprendre comment décompresser un fichier.

Ou que diriez-vous de l'utilisation du shell avec des fonctionnalités d'achèvement avancées (comme zsh ou nouvelles versions de bash) qui vous complètera les options, avec une aide complète? :))

En ce qui concerne le goudron: il suffit de regarder le clavier "qwerty". Il y a des lettres "zxcvf" l'une à côté de l'autre. Vous avez besoin soit des fichiers "tar czvf fichier.tar.gz" ou "tar xzvf fichier.tar.gz".

Résumé de l'option Tar

Vous pouvez modifier ceci pour ajouter d'autres commutateurs ésotériques, mais voici les bases:

  • X – extraire des fichiers
  • C – créer une archive
  • Fichiers t -list
  • V – verbose (liste des fichiers au fur et à mesure qu'il les traite)
  • J – utilisez la compression bz2
  • Z – utiliser la compression gz
  • F – lire ou écrire des fichiers sur le disque

Exemples

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

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

Créer un fichier tar.gz: tar zcvf tarvall.tar.gz mydir / *

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

 unp filename.tar.gz 

… et ça l'extrait tout. Fonctionne avec n'importe quel fichier compressé tant que vous avez les bons binaires. Et vous oubliez simplement la syntaxe ou toute une telle merde. Vérifiez les dépôts de distribution de votre Linux. Il devrait être là (au moins sur Arch, Debian et Ubuntu).

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

Vraiment avec une utilisation fréquente, je fais la différence entre extraire (x) les données et compresser (c) les données:

Extraire:

 tar xzf data.tgz 

Pour compresser:

 tar czf data.tgz 

En outre, vous pouvez ajouter deux fonctions aussi 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 agréable, 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 } 

Si vous avez du mal à vous souvenir des options de tar, essayez d'utiliser des tuyaux:

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

Remplacez tar xv avec tar tv pour simplement voir le contenu du tarball.

Personnellement, j'utilise les mnémoniques suivants:

  • T, x ou c pour "tabulation", "xtracting" ou "création", respectivement.
  • V pour la liste de tous les fichiers.
  • Z, j ou rien pour tar.gz, tar.bz2 ou simple .tar, respectivement.
  • F pour donner un nom de fichier, par rapport à la valeur par défaut d'utilisation de stdin / stdout ou d'un périphérique de bande.

Bien que "j" et "bzip2" semblent n'avoir aucun rapport avec l'autre, je trouve facile de se souvenir de cette exception.

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

L'homme est votre ami.

man tar

Je fais ce qui suit

Pour créer un tar: tar czvf foo.tar.gz

Pour untar tar zxvf foo.tar.gz

Ceux-ci devraient être les principaux interrupteurs dont vous avez besoin pour vous soucier.

C – créer z – compresser / décompresser x – extracte v – verbose f – fichier

Vous pouvez faire des choses plus amusantes comme tar et untar inline alors que vous essayez de déplacer des fichiers à partir de répertoires tels que

Tar cf – | (Cd; tar xvf -)

HTH

90% du temps que j'utilise

 tar -xvf file.* 

X: extrait
V: être verbal (facultatif)
F: fichier d'entrée (tar, gz, bzip2, etc …)

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

J'ai utilisé un script Perl appelé aunpack , une partie du projet atool , depuis de nombreuses années. Vous venez de courir: aunpack foo.{zip/tar.gz/tar.bz2} et cela fonctionne correctement en fonction de l'extension du fichier.

L'autre avantage de aunpack est qu'il ne pollue pas le répertoire actuel avec beaucoup de fichiers. Dites qu'il y a 20 fichiers dans foo.zip qui ne se trouvent pas dans un sous-répertoire. Au lieu de vider ces fichiers dans le répertoire actuel, aunpack créera un sous-répertoire foo et mettra tous les fichiers là-dedans.


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

--create -c

Créez une nouvelle archive tar.

--list -t

Liste le contenu d'une archive.

--extract -x

Extraire un ou plusieurs membres d'une archive.


Les cinq opérations progressives du goudron :

--append -r

Ajoutez de nouvelles entrées à une archive qui existe déjà.

--update -u

Ajoutez des copies plus récentes des membres d'archives à 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

Supprimez les éléments d'une archive (ne fonctionne pas sur les bandes).

--compare --diff -d

Comparez les membres de l'archive avec leurs homologues dans le système de fichiers.


J'ai toujours lu les commandes dans mon esprit, en tapant

Compresser le fichier zip détaillé

 tar cvzf FILE 

Extrait le fichier zip détaillé FILE

 tar xvzf FILE 

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, le 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 

À un-gzip et untar

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

Si vous souhaitez des barres de progression douces, utilisez pv similaire à celui du chat, 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% 

Je ne me rappelle pas :). J'utilise simplement le fichier "tar xf" pour compresser, et j'utilise FileRoller pour créer des packages.

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

Pour illustrer, j'utiliserai un exemple de l'extraction de fichier.tar.gz:

Comme c'est un fichier tar, vous devez utiliser le programme tar. Ensuite, c'est les options:

  1. X puisque 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 permet de pistole 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 

La façon dont je me souviens est 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, donc généralement z, pour une raison quelconque, j = bzip2 est juste coincé dans ma tête).

Parfois, vous rencontrez des fichiers compressés mais non tartés où vous ajoutez un à quel que soit le type de compression. P. Ex. G un zip ou b un zip2.

En tout cas, j'oublie les 2 et parfois "bzip".

Vous pouvez également créer un alias. Ajoutez 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 qui vous conviennent facilement.