{{tag>sysadmin linux cli compression archivage syntaxe commande}}
====== tar ======
===== Lister le contenu de l'archive =====
L'option **-t** permet de lister le contenu de l'archive:
tar -tvf archive.tar
# Equivalent
tar --list --verbose --file=archive.tar
===== Changer le répertoire cible =====
Par défaut le tar est extrait dans le répertoire courant, l'option **-C** ou **%%--%%directory** permet de définir dans quel répertoire sera extraite l'archive:
tar -C /path/to/target/directory -xvf archive.tgz
===== Décompresser sans les répertoires parents =====
Il peut être intéressant de décompresser une archive sans tenir compte de certains répertoires parents.
L'archive test.tar.bz2 a le contenu suivant:
tar -tvf mon_prog.tar.bz2
drwxrwxr-x yoann/yoann 0 2020-04-16 09:43 opt/mon_prog/
-rw-rw-r-- yoann/yoann 8 2020-04-16 09:43 opt/mon_prog/README.txt
-rwxr-xr-x yoann/yoann 11 2020-04-16 09:43 opt/mon_prog/mon_script.sh
Si on décompresse directement cette archive dans le répertoire /usr/local/ par exemple, l'arborescence ./opt/mon_prog/ sera recréée, on obtiendra donc
/usr/local/opt/mon_prog/
├── mon_script.sh
└── README.tx
Pour décompresser les fichier dans /usr/local/ sans tenir compte du dossier de plus haut niveau:
tar -xjvf test.tar.bz2 --directory=/usr/local/ --strip-components=1
L'argument **%%--%%strip-components** permet d'agir sur les noms de fichiers à la décompression et de retirer un ou plusieurs répertoires conteneurs.
On obtient dans ce cas:
/usr/local/mon_prog/
├── mon_script.sh
└── README.tx
===== Références =====
* https://www.tecmint.com/18-tar-command-examples-in-linux/
* https://askubuntu.com/questions/45349/how-to-extract-files-to-another-directory-using-tar-command
* https://unix.stackexchange.com/questions/35311/how-do-you-extract-a-single-folder-from-a-large-tar-gz-archive