147 lines
3.5 KiB
Markdown
147 lines
3.5 KiB
Markdown
# 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. |