Archives tar Linux : créer, compresser et extraire en sécurité
À la fin de ce tutoriel, vous saurez distinguer archive et compression, créer des archives tar (
.tar,.tar.gz/.tgz,.tar.bz2,.tar.xz), les lister avant extract, extraire avec-C, exclure des fichiers, préserver les permissions, et produire un artefact backup/CI dans/tmp.Niveau : Débutant · Temps estimé : 40–50 min · Versions testées : Ubuntu 22.04 / 24.04, Debian 12 ; notes Rocky/Alma 9 · Dernière vérification : 2026-09-11
Slug proposé :
linux-archives-tar· Série : P5 Linux Basics · Remplace / fusionne : N/A — création
Prérequis
- find & locate (localiser avant d’archiver)
- Terminal Linux : navigation (
pwd,ls,cd) - Fichiers & permissions (
ls -l, modes) — utile avec-p - Machine : Ubuntu 22.04/24.04 ou Debian 12 ; Rocky/Alma 9 OK
- Compte non-root ; lab
/tmp— jamais d’extraction sur/
Coût estimé : 0 €. Tout le lab vit dans /tmp/lab-archives — jetable, sans impact système.
Ce que nous allons construire
/tmp/lab-archives/
├── src/ (fichiers de démo à archiver)
│ ├── config/
│ ├── logs/
│ └── data/
├── out/ (archives .tar / .tar.gz / .tar.xz)
└── extract/ (extractions contrôlées avec -C)
Flux : tar cf → tar czf / cJf → tar tf → tar xf -C → exclude → checksum
(Schéma à remplacer par une image locale Excalidraw / draw.io, alt : « Archives tar : créer, compresser gzip/xz, lister, extraire dans un dossier propre ».)
Chapitre #11 de Linux Basics. Archiver config/artefact rappelle layers Docker / artefacts Jenkins : paquet versionné inspectable — le lab reste 100 % tar.
Étape 1 — Archive vs compression : tar, gzip, xz, bzip2
tar (Tape ARchive) agrège fichiers/dossiers en un flux .tar — sans compresser. gzip, xz et bzip2 compressent ce flux. D’où les extensions doubles.
| Extension | Sens | Outil typique |
|---|---|---|
.tar |
Archive seule (pas de compression) | tar -cf |
.tar.gz / .tgz |
Archive + gzip | tar -czf |
.tar.bz2 |
Archive + bzip2 | tar -cjf |
.tar.xz |
Archive + xz (souvent meilleur ratio) | tar -cJf |
Mnémonique : c create, x extract, t list, f file, z gzip, j bzip2, J xz, v verbose, p preserve permissions.
Contraste : zip/unzip = archive+compression (souvent Windows) ; sous Linux/DevOps, tar + gzip/xz reste le standard tarballs / artefacts CI.
mkdir -p /tmp/lab-archives/{src/{config,logs,data},out,extract}
cd /tmp/lab-archives
echo 'app=demo' > src/config/app.conf
echo 'secret=lab-only' > src/config/local.env
echo '2026-09-11 INFO boot' > src/logs/app.log
echo 'payload' > src/data/file.txt
mkdir -p src/data/subdir && echo 'nested' > src/data/subdir/nested.txt
mkdir -p src/node_modules/pkg && echo 'dep' > src/node_modules/pkg/index.js
ls -R src; command -v tar gzip xz bzip2; tar --version | head -n 1
Ubuntu/Debian et Rocky/Alma 9 : tar + gzip souvent déjà là ; xz/bzip2 via apt/dnf si besoin (paquets apt/dnf).
Étape 2 — Créer une archive : tar -cf, -czf, -cJf / -cjf
cd /tmp/lab-archives
# Archive seule (.tar) — pas de compression
tar -cf out/demo.tar -C src .
# Archive + gzip (.tar.gz) — le plus courant
tar -czf out/demo.tar.gz -C src .
# Alias .tgz + xz + bzip2
tar -czf out/demo.tgz -C src .
tar -cJf out/demo.tar.xz -C src .
tar -cjf out/demo.tar.bz2 -C src .
ls -lh out/
-C src change de répertoire avant d’ajouter . : chemins relatifs (config/, logs/…) sans préfixe /tmp/....
Équivalence : tar -czf out/demo.tar.gz -C src . ≈ tar -cf - -C src . | gzip > out/demo.tar.gz. tar czf est idiomatique ; le pipe montre que gzip est distinct.
Tip DevOps : nommez les artefacts (
config-$(date +%Y%m%d).tar.gz,build-$CI_COMMIT_SHORT_SHA.tar.xz) — unout.tar.gzanonyme devient illisible vite.
Étape 3 — Lister avant d’extraire : tar -tf et tar -tvf
Règle d’or : inspectez toujours avant tar xf, surtout si l’archive vient d’ailleurs.
cd /tmp/lab-archives
tar -tf out/demo.tar.gz | head -n 20
tar -tvf out/demo.tar.gz | head -n 15
# Chercher un chemin précis
tar -tf out/demo.tar.gz | grep 'config/app.conf'
| Flag | Effet |
|---|---|
-t |
Liste les membres (table of contents) |
-v |
Détail type ls -l (modes, tailles, dates) |
-f |
Fichier archive (obligatoire hors bande) |
Attendu : chemins relatifs (./config/app.conf…). Absolus /etc/... ou ../ → n’extrayez pas en aveugle.
Étape 4 — Extraire en sécurité : tar -xf, -C, prudence écrasement
cd /tmp/lab-archives
# Toujours vers un dossier dédié
mkdir -p extract/run1
tar -xzf out/demo.tar.gz -C extract/run1
ls -la extract/run1
ls -la extract/run1/config
# Même archive, autre destination (évite de polluer le cwd)
mkdir -p extract/run2
tar -xJf out/demo.tar.xz -C extract/run2
diff -rq extract/run1 extract/run2 | head
| Action | Commande type | Prudence |
|---|---|---|
| Extraire gzip / xz / brut | tar -xzf / -xJf / -xf + -C dest/ |
Créer dest/ d’abord |
| Préserver perms | tar -xpf … |
Pas en root sur / |
Jamais sudo tar -xf … -C /. Extrayez sous /tmp/lab-archives/extract/..., vérifiez, copiez ciblé. tar peut écraser des homonymes : dossier propre + tar tf d’abord.
Rocky/Alma 9 : mêmes flags GNU tar ; versions xz/gzip peuvent varier (ratio), pas le flux.
Étape 5 — gzip / gunzip / zcat ; xz et bzip2 en bref
Fichier unique compressé (pas un tarball) : log rotaté, dump SQL.
cd /tmp/lab-archives
cp src/logs/app.log out/app.log
gzip -k out/app.log # produit app.log.gz ; -k garde l’original (gzip ≥1.6)
ls -lh out/app.log out/app.log.gz
zcat out/app.log.gz # lit sans décompresser sur disque
gunzip -k out/app.log.gz # ou : gzip -dk
# xz / bzip2 sur fichier unique
cp src/data/file.txt out/file-xz.txt
xz -k out/file-xz.txt # → file-xz.txt.xz
xz -dk out/file-xz.txt.xz # décompresse en gardant .xz si -k supporté
| Outil | Compresser | Décompresser / lire |
|---|---|---|
| gzip | gzip fichier → .gz |
gunzip, zcat |
| xz | xz fichier → .xz |
unxz, xzcat |
| bzip2 | bzip2 fichier → .bz2 |
bunzip2, bzcat |
Pour un arbre, préférez tar -czf / tar -cJf plutôt que gzip fichier par fichier.
Étape 6 — Exclure, préserver, strip-components
cd /tmp/lab-archives
# Exclure node_modules et logs verboses
tar -czf out/app-slim.tar.gz
--exclude='node_modules'
--exclude='*.log'
-C src .
tar -tf out/app-slim.tar.gz
# Attendu : config/ et data/ présents ; pas de node_modules ni *.log
# Préserver permissions à la création / extraction (utile backup config)
chmod 600 src/config/local.env
tar -czpf out/config-backup.tar.gz -C src config
mkdir -p extract/perms && tar -xzpf out/config-backup.tar.gz -C extract/perms
stat -c '%a %n' extract/perms/config/local.env
# Attendu : 600 …
# strip-components : retirer N préfixes de chemins à l’extraction
mkdir -p extract/strip
tar -xzf out/config-backup.tar.gz -C extract/strip --strip-components=1
ls extract/strip
# config/ retiré du chemin → fichiers directement sous extract/strip/
--exclude : motifs avant les chemins sources (GNU tar). --strip-components=N aplatit un préfixe unique (myapp-1.2.3/...) vers la cible.
Étape 7 — Cas DevOps : backup config, artefact CI, logs rotatés
cd /tmp/lab-archives
STAMP=$(date +%Y%m%d-%H%M)
# 1) Backup config (permissions + exclude secrets de lab si besoin)
tar -czpf "out/backup-config-${STAMP}.tar.gz"
--exclude='local.env'
-C src config
tar -tf "out/backup-config-${STAMP}.tar.gz"
# 2) Artefact « build » minimal (data + config, sans logs ni node_modules)
tar -cJf "out/artifact-${STAMP}.tar.xz"
--exclude='node_modules'
--exclude='logs'
-C src .
ls -lh out/artifact-*.tar.xz
# 3) Log déjà gzippé (rotation manuelle de démo)
gzip -kc src/logs/app.log > "out/app-${STAMP}.log.gz"
zcat "out/app-${STAMP}.log.gz"
En CI : publier dist/ en .tar.gz/.tar.xz, puis tar tf + tar xf -C /opt/app-new avant bascule. Même réflexe qu’un backup /etc/nginx : archive nommée, listée, hors racine.
Étape 8 — Vérification (checksum optionnel)
cd /tmp/lab-archives
sha256sum out/demo.tar.gz out/demo.tar.xz | tee out/SHA256SUMS
sha256sum -c out/SHA256SUMS
mkdir -p extract/verify
tar -xzf out/demo.tar.gz -C extract/verify
test -f extract/verify/config/app.conf && test -f extract/verify/data/subdir/nested.txt && echo "OK extract"
tar -tf out/app-slim.tar.gz | grep -c node_modules || echo "OK exclude"
Validé si : .tar.gz/.tar.xz créés, tar tf avant extract, -C extract/, exclude node_modules, checksum optionnel.
Nettoyage — lab jetable
rm -rf /tmp/lab-archives
# Vérification
test ! -d /tmp/lab-archives && echo "lab archives nettoyé"
Rien d’autre à désinstaller. Jamais rm -rf / ni extraction tar vers / en root.
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
| Archive tronquée / non recoverable | Download incomplet / disque plein | Taille + sha256sum ; recréer |
| Fichiers « partout » dans le cwd | Oubli de -C dest/ |
mkdir -p dest && tar -xf … -C dest |
Chemins / ou ../ dans tar tf |
Archive douteuse | Ne pas extraire |
gzip: command not found |
Paquet manquant | apt/dnf install gzip |
Archive énorme (node_modules) |
Pas d’--exclude |
--exclude='node_modules' |
| Permissions perdues | Modes non préservés | tar -p + stat |
Confusion .tar / .tar.gz |
Mauvais z/J/j |
.gz→-z ; .xz→-J ; .bz2→-j |
Quiz (3 questions)
1. Que fait principalement tar sans z/j/J ?
– A. Compresse uniquement en gzip
– B. Agrège des fichiers en une archive .tar (sans compresser)
– C. Formate un disque
2. Pourquoi lancer tar -tf archive.tar.gz avant d’extraire ?
– A. Pour compresser plus fort
– B. Pour inspecter les chemins et éviter surprises (écrasement, ../)
– C. Obligatoire pour que gzip fonctionne
3. Quelle commande extrait proprement dans /tmp/lab-archives/extract/run ?
– A. tar -xzf out/demo.tar.gz -C /tmp/lab-archives/extract/run (dossier créé avant)
– B. tar -xzf out/demo.tar.gz -C /
– C. rm -rf / && tar -xf out/demo.tar.gz
Réponses : 1‑B · 2‑B · 3‑A
FAQ
Quelle différence entre tar et gzip ?
tar assemble en .tar ; gzip/xz/bzip2 compressent. Combinés : .tar.gz. tar -czf enchaîne ; tar | gzip montre le même découpage.
Comment créer une archive tar.gz sous Linux ?
tar -czf out/demo.tar.gz -C src . puis tar -tf … et tar -xzf … -C extract/run. Flags : c create, z gzip, f fichier, -C chemins relatifs.
Comment extraire tar.xz sans écraser le système ?
mkdir -p /tmp/lab-archives/extract/x → tar -tJf archive.tar.xz → tar -xJf archive.tar.xz -C …/extract/x. Pas de root ni -C /.
Pour aller plus loin
man tar,man gzip,man xz- Suivant : pipes & redirections (
tar | gzip) - Recherche avant archive : find & locate
Maillage série Linux Basics (P5)
| ← Précédent | find & locate |
| → Suivant | Pipes & redirections |
| Hub | Linux Basics |
| Aussi | Fichiers & permissions · Terminal navigation |
Meta publication (à remplir dans Rank Math / SEO)
- Title SEO : Archives tar Linux : créer, compresser et extraire (.tar.gz, .xz) 2026
- Meta description (≤ 155) : Créez, listez et extrayez des archives tar (.tar.gz, .tar.xz) en sécurité. Lab DevOps /tmp : backup config, artefacts CI.
- Focus keyphrase : archives tar
- KW secondaires : tar gz, tar.xz, extraire tar.gz, créer archive tar, gzip linux, tar exclude
- Schemas Rank Math : Article + HowTo (étapes lab) + FAQ (3 questions ci-dessus)
- Image mise en avant :
assets/web/devopelastichayway/cover-linux-archives-tar-1200x630.webp(Visuels Linux — WebP 1200×630) - Catégorie : Linux · Niveau : Débutant
- Slug :
linux-archives-tar
← Retour parcours Linux — Basics, Admin, Réseau & Sécurité, Shell & Automation.