# tar ## Introduction `tar` (*tape archive*) est l'outil standard sous Linux pour regrouper plusieurs fichiers et dossiers dans une seule archive, éventuellement compressée. Avant d'entrer dans les commandes, voici les options à connaître : - `c` : créer (*create*) une archive - `x` : extraire (*extract*) une archive - `t` : lister (*table*) le contenu - `v` : mode verbeux (*verbose*) - `f` : indique le nom du fichier archive (*file*) - `z` : compression gzip - `j` : compression bzip2 - `J` : compression xz ## Comparaison des formats de compression La taille d'une archive `tar` dépend fortement de l'algorithme de compression. Exemple avec un dossier `html` contenant des fichiers **HTML**, **CSS** et **JS** : | Archive | Taille (octets) | | -------- | --------------- | | tar | 40 960 | | tar.gz | 6 200 | | tar.bz2 | 6 003 | | tar.xz | 5 656 | En règle générale : `gzip` est le plus rapide, `xz` offre le meilleur taux de compression, `bzip2` se situe entre les deux. ## tar : archiver sans compresser Créer une archive à partir d'un ou plusieurs fichiers : ``` tar cvf archive.tar fichier1 fichier2… ``` Créer une archive à partir d'un dossier : ``` tar cvf archive.tar dossier/ ``` > **Attention** : le chemin passé en argument est conservé tel quel dans l'archive. Pour archiver le contenu sans inclure le chemin parent, utilisez `-C` : > > ``` > tar cvf archive.tar -C /chemin/parent dossier > ``` Extraire les fichiers d'une archive : ``` tar xvf archive.tar ``` Lister le contenu d'une archive : ``` tar tvf archive.tar ``` ## tar.gz : compression gzip Toutes les commandes utilisent l'option `z`. Créer une archive compressée à partir de fichiers ou d'un dossier : ``` tar zcvf archive.tar.gz fichier1 fichier2… tar zcvf archive.tar.gz dossier/ ``` Créer une archive **sans** les informations de propriétaire et de groupe (utile pour produire une archive portable destinée à un autre système) : ``` tar zcvf archive.tar.gz . --owner=0 --group=0 ``` > Pensez à documenter les droits attendus à l'extraction (par exemple via un script post-déploiement ou un `chown` explicite). Extraire : ``` tar zxvf archive.tar.gz ``` Lister le contenu : ``` tar ztvf archive.tar.gz ``` Supprimer un fichier dans l'archive : ``` tar --delete -f archive.tar.gz chemin/du/fichier ``` ## tar.xz : compression xz Utilise l'option `J` (le meilleur taux de compression, mais le plus lent). Créer une archive à partir de fichiers ou d'un dossier : ``` tar Jcvf archive.tar.xz fichier1 fichier2… tar Jcvf archive.tar.xz dossier/ ``` Extraire : ``` tar Jxvf archive.tar.xz ``` ## tar.bz2 : compression bzip2 Utilise l'option `j` (minuscule). Créer une archive à partir de fichiers ou d'un dossier : ``` tar jcvf archive.tar.bz2 fichier1 fichier2… tar jcvf archive.tar.bz2 dossier/ ``` Lister le contenu (filtré sur les fichiers `.txt`) : ``` tar tvf archive.tar.bz2 '*.txt' ``` Extraire : ``` tar jxvf archive.tar.bz2 ``` ## Récapitulatif | Format | Création | Extraction | Lister | | --------- | -------------- | -------------- | -------------- | | tar | `tar cvf` | `tar xvf` | `tar tvf` | | tar.gz | `tar zcvf` | `tar zxvf` | `tar ztvf` | | tar.bz2 | `tar jcvf` | `tar jxvf` | `tar jtvf` | | tar.xz | `tar Jcvf` | `tar Jxvf` | `tar Jtvf` | Sur les versions récentes de `tar`, vous pouvez aussi omettre l'option de compression : `tar xvf archive.tar.gz` fonctionne, le format étant détecté automatiquement.