Comment extraire des fichiers dans un autre répertoire en utilisant la commande 'tar'?

574

Je pensais que tar archive.tar /users/mylocation fonctionnerait, mais ce n’est pas le cas. Comment puis je faire ça?

    
posée goovim 26.05.2011 - 18:01
la source

6 réponses

825

Pour extraire une archive dans un répertoire différent du répertoire courant, utilisez l’option -C , ou --directory , tar, comme dans

tar -xf archive.tar -C /target/directory

Notez que le répertoire cible doit exister avant d’exécuter cette commande (il peut être créé par mkdir /target/directory ).

Lisez la page de manuel (commande: man tar ) pour connaître les autres options.

    
réponse donnée Wesley Rice 26.05.2011 - 18:16
la source
212

Notez que si votre archive contient déjà un nom de répertoire que vous souhaitez modifier, ajoutez l’option --strip-components=1 :

tar xf archive.tar -C /target/directory --strip-components=1
    
réponse donnée Bryan Larsen 21.05.2014 - 20:32
la source
20

Combinant les réponses et commentaires précédents:

Pour extraire simplement le contenu et créer un répertoire cible s'il est manquant:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Pour extraire et également supprimer le répertoire racine (premier niveau) du fichier zip

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
    
réponse donnée Thamme Gowda 27.06.2016 - 21:29
la source
5

Une autre option consiste à utiliser --one-top-level. Cela créera automatiquement un répertoire basé sur le nom de fichier de l'original.

tar zxvf filename.tgz --one-top-level

En outre, si vous le souhaitez, vous pouvez spécifier le vôtre et tar le créera automatiquement.

tar zxvf filename.tgz --one-top-level=new_directory
    
réponse donnée Dean Householder 22.03.2018 - 22:49
la source
1

Avec tar 1.29, nous pouvons simplement ajouter le nom du répertoire après le nom de fichier tar. Par exemple,

tar zxvf tar-file directory-name/
    
réponse donnée Shunmuga priyan Selvaraju 30.06.2018 - 01:00
la source
0

Ce que j'ai trouvé intéressant par rapport à l'extraction, c'est que cela dépend de la façon dont vous avez créé l'archive, voir cet exemple

cd /tmp
mkdir folder
touch folder/file.txt

quand vous faites tar -zcvf folder.tar.gz folder tout est comme prévu = quand vous le décompressez maintenant, il sera supprimé (le dossier sera créé, si vous l'avez supprimé) sous la forme /tmp/folder/ .

Mais lorsque vous créerez tar comme tar -zcvf tmp-folder.tar.gz /tmp/folder et que vous le décompresserez dans le dossier / tmp, le résultat sera le répertoire /tmp/tmp/folder ! Dans ce cas, vous devez le décompresser en / - tar -xf tmp-folder.tar.gz -C /

    
réponse donnée Betlista 02.09.2017 - 00:25
la source

Lire d'autres questions sur les étiquettes