Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

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

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) — un out.tar.gz anonyme 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/xtar -tJf archive.tar.xztar -xJf archive.tar.xz -C …/extract/x. Pas de root ni -C /.

Pour aller plus loin

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.