web-dev-qa-db-fra.com

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

Je pensais que tar archive.tar /users/mylocation fonctionnerait, mais ça ne marche pas. Comment puis je faire ça?

641
goovim

Pour extraire une archive dans un répertoire différent de celui en cours, utilisez l'option -C ou --directory, 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 le page de manuel (commande: man tar) pour d'autres options.

924
Wesley Rice

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
249
Bryan Larsen

Combinaison des réponses précédentes et des commentaires:

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) dans le zip

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
26
Thamme Gowda

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

De plus, 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
14
Dean Householder

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

tar zxvf tar-file directory-name/

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 = lorsque vous le décompressez maintenant, il sera sans barre (le dossier sera créé, si vous l'avez supprimé) sous la forme /tmp/folder/.

Mais, lorsque vous créerez tar en tant que 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 sous/- tar -xf tmp-folder.tar.gz -C /

1
Betlista