Je pensais que tar archive.tar /users/mylocation
fonctionnerait, mais ça ne marche pas. Comment puis je faire ça?
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.
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
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
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
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 /