1017 votes

Quelle commande dois-je utiliser pour décompresser/unzipper un fichier .tar.gz ?

J'ai reçu un énorme fichier .tar.gz d'un client contenant environ 800 Mo de fichiers image (une fois décompressé). Le ftp de notre société d'hébergement est très lent, donc extraire tous les fichiers localement et les envoyer via ftp n'est pas pratique. J'ai pu envoyer le fichier .tar.gz via ftp sur notre site d'hébergement, mais lorsque je me connecte en ssh dans mon répertoire et essaie d'utiliser la commande unzip, cela me donne cette erreur :

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

Quelle commande dois-je utiliser pour extraire tous les fichiers d'un fichier .tar.gz ?

1679voto

djeikyb Points 28025

Tapez man tar pour plus d'informations, mais cette commande devrait faire l'affaire:

tar -xvzf community_images.tar.gz

Pour expliquer un peu plus, tar a rassemblé tous les fichiers dans un seul paquet, community_images.tar. Le programme gzip a appliqué une compression, d'où l'extension gz. Donc la commande fait quelques choses :

  • f: ceci doit être le dernier drapeau de la commande, et le fichier tar doit être immédiatement après. Il indique à tar le nom et le chemin du fichier compressé.
  • z: indique à tar de décompresser l'archive en utilisant gziz
  • x: tar peut rassembler des fichiers ou les extraire. x fait ce dernier.
  • v: fait parler tar beaucoup. La sortie verbeuse vous montre tous les fichiers en cours d'extraction.

Pour extraire dans un dossier personnalisé, ajoutez l'option -C avec un nom de dossier de votre choix :

tar -xvzf community_images.tar.gz -C some_custom_folder_name

21 votes

Cela me rappelle l'article de xckd sur le goudron. Je dois y revenir à chaque fois.

64 votes

Ma mnémonique pour cela est : xtraire ze v ***ing fichiers.

1 votes

Cela aurait-il de l'importance si z venait avant x? Ou bien appliquerait-il intelligemment les extenseurs dans l'ordre approprié, peu importe?

196voto

JorgeArtware Points 3277

Si vous souhaitez que les fichiers soient extraits dans une destination particulière, vous pouvez ajouter -C /chemin/destination/
Assurez-vous de créer le répertoire au préalable, dans ce cas : ~/Images/Communauté

Exemple:

mkdir ~/Images/Communauté
tar xf images_communaute.tar.gz -C /home/emmys/Images/Communauté/

Vous pouvez facilement le mémoriser en considérant dire à tar d'e X traire un F ichier

gif du processus effectué dans le terminal

Remarque : N'oubliez pas que vous pouvez rechercher à l'intérieur des pages du manuel avec ?+terme à rechercher, puis n et N pour aller à l'instance suivante ou précédente du terme que vous recherchez.

5 votes

N'oubliez pas C pour "changer de répertoire"! De plus, je pense qu'il vaut mieux ne pas mélanger les options avec et sans tiret (surtout quand on utilise ps).

2 votes

Pourquoi n'est-ce pas -o comme chaque autre commande ?

10 votes

J'adore votre conseil 'tar pour extraire un fichier'

127voto

djeikyb Points 28025

À un moment donné, tar a été mis à jour pour se décompresser automatiquement. Tout ce dont vous avez besoin maintenant est :

tar xf community_images.tar.gz

La même explication s'applique :

  • f : cela doit être le dernier drapeau de la commande, et le fichier tar doit être immédiatement après. Cela indique à tar le nom et le chemin du fichier compressé.
  • x : extraire les fichiers.

Remarquez l'absence de tiret pour les drapeaux de commande. Cela est dû au fait que la plupart des versions de tar permettent les options de style gnu et bsd (dans sa simplicité, gnu nécessite un tiret, bsd non).

1 votes

Y a-t-il de la documentation sur ceci? J'ai cherché partout une référence à cela, je n'utilise jamais le drapeau -z et tout est compressé donc j'ai été inquiet de ne pas compresser du tout mes tarballs, haha. Merci.

2 votes

@neurosnap voir le manuel gnu et du manuel de bsd

5 votes

Il aurait probablement été préférable de modifier votre réponse initiale.

17voto

Sergiy Kolodyazhnyy Points 97292

Se souvenir de tous les drapeaux pour tar peut être fastidieux. XKCD obligatoire :

entrez la description de l'image ici

C'est pourquoi j'ai créé mon propre petit script en Python pour le faire. Rapide, sale, semblable à l'utilisation de cp :

#!/usr/bin/env python3
import tarfile,sys,os
tf = tarfile.open(name=sys.argv[1],mode='r:gz')
where = '.'
if len(sys.argv) == 3:
    where = sys.argv[2]
tf.extractall(path=where)
tf.close()

Utilisez-le comme ça :

myuntar.py archive.tar

Voir aussi un script similaire pour décompresser des archives zip.

3 votes

:) seulement deux drapeaux tar à retenir -caf pour créer basé sur le nom de fichier et -xf pour extraire (selon mes connaissances disponibles, fonctionne sur tous les types de tar).

0 votes

@Videonauth Je sais, ce n'est pas si compliqué, mais pour une raison quelconque, je ne me souviens jamais de ces options. Peut-être parce que je ne travaille pas assez souvent avec les archives.

0 votes

Est-ce que cela ne fonctionne que pour les fichiers tar gzippés ? Les docs de l'API mentionnent un mode de lecture avec compression transparente ; est-ce que cela se comporterait plus comme tar xf ?

12voto

Benyamin Jafari Points 1687

Quick Answer:

tar -xvf  <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>

[NOTE]:

  • -v Verbosely list files processed.
  • -z Filter the archive through gzip.
  • -f Use archive file or device ARCHIVE.
  • -x Extract files from an archive.
  • -j bzip2.
  • tar -xf archive.tar # Extract all files from archive.tar.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X