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


j'ai pensé tar archive.tar /users/mylocation fonctionnerait, mais ce n'est pas le cas. Comment puis je faire ça?


581
2018-05-26 16:01


origine


Aussi, -C, --directory DIR\n change to directory DIR devrait plutôt être décrit comme change output directory to DIR (will fail if DIR doesn't exist). Merci @Mich. Voir aussi la réponse de @ Bryan_Larsen. - valid
@Ujjwal Sing: En effet, la page de manuel tar n'est pas très utile. Il décrit "-C DIR" comme "changer de répertoire DIR". Encore pire: "tar -C mydir xf archive.tar" ne fonctionne pas, alors que "tar xf archive.tar -C mydir" le fait. - Pat Morin


Réponses:


Pour extraire une archive dans un répertoire différent du courant, utilisez le -C, ou --directory, option 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).

Lis le page de manuel (commander: man tar) pour d'autres options.


841
2018-05-26 16:16



Vous devez cependant créer le répertoire manuellement. - Jürgen Paul
Est-ce que le chemin peut être dépouillé? - zzapper
Si c'est un fichier plus volumineux, lorsque vous exécutez la commande, tout ce que vous obtenez ne produit aucune sortie pendant plusieurs secondes, voire quelques minutes. Vous pouvez résoudre ce problème en ajoutant le -v drapeau (mode verbeux) qui répertorie le nom de chaque fichier lors de son extraction. - IQAndreas
@consultstan xkcd.com/1168 - Duncan X Simpson
N'est-il pas étonnant que, après toutes ces années, avec toutes les options tar a accumulé, il n'y a toujours pas une option pour créer le répertoire de sortie s'il n'existe pas? - EM0


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

tar xf archive.tar -C /target/directory --strip-components=1

215
2018-05-21 18:32



Je vous remercie. Les téléchargements via wget / etc ont toujours un répertoire 'parent'. Ceci est la réponse complète imo - ou devrait être noté dans la réponse ci-dessus. - bshea


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

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

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

20
2018-06-27 19:29





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

6
2018-03-22 21:49





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/

1
2018-06-29 23:00





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 tu fais 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é) /tmp/folder/.

Mais quand vous créerez du goudron comme tar -zcvf tmp-folder.tar.gz /tmp/folder et vous le décompressez dans le dossier / tmp, le résultat sera /tmp/tmp/folder répertoire! Dans ce cas, vous devez le décompresser sur / - tar -xf tmp-folder.tar.gz -C /


0
2017-09-01 22:25