facile · Durée estimée : 25 min
Savoir regrouper plusieurs fichiers en une seule archive et la compresser. Indispensable pour faire des sauvegardes, transférer des dossiers, ou télécharger des sources.
Tu vas apprendre tar (le standard Unix),
gzip (compression), et zip /
unzip (compatibles Windows).
Beaucoup de gens confondent, mais ce sont deux choses différentes :
tar)gzip, zip)
Sur Linux, on combine les deux :
tar regroupe, puis gzip compresse.
D'où le fameux .tar.gz (ou .tgz).
.tar.gz = archive tar compressée par gzip..tar.bz2 = archive tar compressée par bzip2
(plus lent, plus compact)..zip = format tout-en-un (archive + compression).
Créons un petit dossier avec plusieurs fichiers :
mkdir ~/projet
cd ~/projet
echo "Fichier 1" > f1.txt
echo "Fichier 2" > f2.txt
echo "Fichier 3" > f3.txt
mkdir sous_dossier
echo "Dans le sous-dossier" > sous_dossier/note.txt
ls -la
ls -la.
ls doit afficher f1.txt,
f2.txt, f3.txt,
sous_dossier.
La syntaxe de tar est un peu obscure au
début, mais on retient 3 combinaisons clés.
c → créer (create)
x → extraire (extract)
t → lister (list)
f → fichier (file) ← toujours suivi du nom de l'archive
v → verbeux (affiche ce qui est fait)
tar -cvf projet.tar projet/
-cvf = create + verbose + file.
Crée projet.tar contenant tout le dossier
projet/.
tar -czvf projet.tar.gz projet/
z = gzip. C'est l'option que tu utiliseras
95 % du temps.
tar -cjvf projet.tar.bz2 projet/
j = bzip2. Plus lent, plus compact.
-C /chemin → se placer dans ce dossier avant d'archiver
--exclude=*.log → exclure certains fichiers
-p → préserver les permissions
--wildcards → activer les jokers
tar -czvf : mémorise-le comme
"Créer, Zippé, Verbeux, Fichier".
~, crée une archive
projet.tar.gz contenant le dossier
projet/.
ls -lh projet.tar.gz doit montrer le fichier
et sa taille.
tar -tzvf projet.tar.gz
tar -xzvf projet.tar.gz
-xzvf = extract + gzip + verbose + file.
tar -xzvf projet.tar.gz -C /tmp/
/tmp/ au lieu du dossier courant.
tar -xzvf projet.tar.gz projet/f1.txt
f1.txt depuis l'archive.
sudo tar -xvf sur une
archive téléchargée d'Internet. Elle peut contenir des
chemins malveillants (../../../etc/passwd).
Extrait d'abord dans un dossier utilisateur, puis copie
manuellement ce dont tu as besoin.
tar -tzvf avant tar -xzvf :
toujours vérifier ce qu'on va extraire. Réflexe de sécurité.
projet.tar.gz, puis
extrais-le dans /tmp/test_extract/.
ls /tmp/test_extract/projet/ doit montrer
les 3 fichiers et le dossier.
gzip compresse un fichier unique
(pas un dossier, pas plusieurs fichiers à la fois). Par
défaut, il remplace le fichier original par une version
.gz.
gzip f1.txt
f1.txt devient f1.txt.gz.
L'original disparaît.
gunzip f1.txt.gz
f1.txt.gz redevient f1.txt.
gzip -k f1.txt # garde f1.txt ET f1.txt.gz
gzip -v f1.txt
f1.txt: 25.0% -- replaced with f1.txt.gz
zcat f1.txt.gz affiche le contenu d'un
fichier .gz sans le décompresser sur disque.
Très pratique pour lire un gros log compressé.
f2.txt, vérifie avec
ls, puis décompresse-le.
gunzip, f2.txt doit être
de nouveau présent.
zip combine archivage et compression en une
seule étape. C'est le format le plus universel, compatible
avec Windows et macOS sans rien installer.
Sur Alpine, installe-le d'abord :
apk add zip unzip
zip -r projet.zip projet/
-r = récursif (obligatoire pour un dossier).
zip -r -9 projet.zip projet/ # compression maximale
zip -r -e projet.zip projet/ # avec mot de passe
zip -r projet.zip projet/ -x "*.log" # exclure
unzip -l projet.zip
unzip projet.zip # dans le dossier courant
unzip projet.zip -d /tmp/ # dans /tmp/
unzip projet.zip f1.txt # un seul fichier
unzip -t projet.zip
tar.gz qui
préserve mieux les permissions et la structure.
projet.zip, liste son
contenu, puis extrais-la dans /tmp/zip_test/.
ls /tmp/zip_test/projet/ doit afficher les
fichiers.
Format Archive Compresse Commande création
---------- ------- --------- -------------------------
.tar oui non tar -cvf
.tar.gz oui oui tar -czvf
.tar.bz2 oui oui (+++) tar -cjvf
.gz non oui gzip
.zip oui oui zip -r
.tar.gz
(préserve les permissions).zip.tar.bz2
ou .tar.xzgzip
(donne .gz)
Tu veux sauvegarder ton dossier projet/
avec la date dans le nom, en excluant les fichiers de log.
DATE=$(date +%Y-%m-%d)
tar -czvf "projet_$DATE.tar.gz" projet/ --exclude="*.log"
ls -lh projet_*.tar.gz
projet_2026-11-20.tar.gz.
tar -xzvf projet_2026-11-20.tar.gz -C /tmp/restauration/
projet/
puis vérifie qu'elle contient bien les 4 éléments.
tar -tzvf projet_*.tar.gz doit lister
f1.txt, f2.txt, f3.txt et sous_dossier/.
TAR
tar -cvf a.tar dossier/ → créer
tar -czvf a.tar.gz dossier/ → créer + gzip
tar -cjvf a.tar.bz2 dossier/ → créer + bzip2
tar -tzvf a.tar.gz → lister
tar -xzvf a.tar.gz → extraire
tar -xzvf a.tar.gz -C /tmp/ → extraire ailleurs
tar -xzvf a.tar.gz fichier.txt → extraire 1 fichier
GZIP
gzip fichier.txt → compresser (efface l'original)
gzip -k fichier.txt → compresser (garde l'original)
gunzip fichier.txt.gz → décompresser
zcat fichier.txt.gz → lire sans décompresser
ZIP
zip -r a.zip dossier/ → créer
unzip -l a.zip → lister
unzip a.zip → extraire
unzip a.zip -d /tmp/ → extraire ailleurs
unzip -t a.zip → tester
tar -czvf → "Créer Zippé Verbeux Fichier"
tar -xzvf → "eXtract Zippé Verbeux Fichier"
tar -tzvf → "lisTer Zippé Verbeux Fichier"
sauvegarde_test avec 5 fichiersarchive avec 2 fichiersbackup.tar.gz de toutbackup.zip au format zip/tmp/comparaison/ls -lh backup.tar.gz backup.zip
mkdir -p /tmp/comparaison/tar /tmp/comparaison/zip
tar -xzf backup.tar.gz -C /tmp/comparaison/tar/
unzip -q backup.zip -d /tmp/comparaison/zip/
diff -r /tmp/comparaison/tar/sauvegarde_test /tmp/comparaison/zip/sauvegarde_test
diff -r ne doit afficher aucune différence.