KYOSH1RO

◀ Cheatsheets / LINUX & SYSADMIN

Archives Linux — tar, gzip et zip

Créer, inspecter, compresser, extraire et vérifier des archives Linux avec tar, gzip et zip, avec exclusions, permissions, transferts et bonnes pratiques.

Filtrer
Une archive regroupe plusieurs fichiers ; la compression réduit leur taille. tar crée l'archive, tandis que gzip, xz ou zstd peuvent la compresser. Le format ZIP regroupe et compresse en une seule opération.

Reconnaître les formats

3 cmds
● .tar : archive non compressée
● .tar.gz ou .tgz : archive tar compressée avec gzip
● .tar.xz : archive tar compressée avec xz
● .tar.zst : archive tar compressée avec zstd
● .gz : un seul flux ou fichier compressé avec gzip
● .zip : archive ZIP, pratique pour l'échange avec Windows et macOS
file archive.tar.gzDétecter le format réel
du -sh dossier/Taille du dossier source
ls -lh archive.tar.gzTaille de l'archive

Créer une archive tar

5 cmds
tar -cvf archive.tar dossier/Créer une archive non compressée
tar -czvf archive.tar.gz dossier/Créer une archive gzip
tar -cJvf archive.tar.xz dossier/Créer une archive xz
tar --zstd -cvf archive.tar.zst dossier/Créer une archive zstd
tar -caf archive.tar.gz dossier/Choisir la compression selon le suffixe
Dans les options courtes : c crée, x extrait, t liste, v affiche les fichiers et f indique le nom de l'archive. Avec GNU tar, l'option -a sélectionne la compression selon l'extension.

Archiver depuis un autre dossier

2 cmds
tar -czf /backup/site.tar.gz -C /srv site/Éviter d'enregistrer un chemin absolu
tar -czf /backup/config.tar.gz -C / etc/nginx etc/sshArchiver plusieurs chemins relatifs à /
L'option -C change de dossier avant d'ajouter les fichiers. Elle produit des chemins propres et facilite la restauration vers un emplacement choisi.

Lister et tester une archive tar

6 cmds
tar -tf archive.tarLister une archive tar
tar -tf archive.tar.gzLister une archive compressée, détection automatique
tar -tvf archive.tar.gzListe détaillée avec droits et tailles
gzip -t archive.tar.gzVérifier l'intégrité gzip
xz -t archive.tar.xzVérifier l'intégrité xz
zstd -t archive.tar.zstVérifier l'intégrité zstd

Extraire une archive tar

4 cmds
tar -xf archive.tarExtraire dans le dossier courant
tar -xf archive.tar.gzExtraire une archive gzip
tar -xf archive.tar.gz -C /destination/Extraire dans un dossier précis
tar -xvf archive.tar.gzAfficher les fichiers extraits
GNU tar reconnaît normalement la compression lors de la lecture. Il n'est donc pas nécessaire d'ajouter -z, -J ou --zstd pour une extraction classique depuis un fichier.

Extraire seulement certains fichiers

4 cmds
tar -xf archive.tar.gz dossier/fichier.confExtraire un fichier précis
tar -xf archive.tar.gz dossier1/ dossier2/Extraire plusieurs dossiers
tar --wildcards -xf archive.tar.gz '*.conf'Extraire avec un motif
tar --strip-components=1 -xf archive.tar.gz -C /destination/Retirer le premier niveau du chemin

Exclure des fichiers

9 cmds
tar --exclude='*.log' -czf archive.tar.gz dossier/Exclure les logs
tar --exclude='dossier/cache' -czf archive.tar.gz dossier/Exclure un sous-dossier
tar --exclude='.git' --exclude='node_modules' -czf source.tar.gz projet/Plusieurs exclusions
tar --exclude-from=exclusions.txt -czf archive.tar.gz dossier/Charger une liste d'exclusions
Exemple exclusions.txt
*.tmp
*.log
cache/
.git/
node_modules/

Préserver permissions, ACL et attributs

2 cmds
sudo tar --acls --xattrs --numeric-owner -cpf sauvegarde.tar -C / srv/dataSauvegarder les métadonnées
sudo tar --same-owner --acls --xattrs -xpf sauvegarde.tar -C /Restaurer les métadonnées
La restauration des propriétaires, ACL et attributs étendus nécessite des privilèges suffisants et un système de fichiers compatible. Ne pas extraire une archive non fiable avec root.

Utiliser gzip seul

7 cmds
gzip compresse un fichier ou un flux, mais ne regroupe pas plusieurs fichiers. Pour un dossier, utiliser tar puis gzip, généralement via tar -czf.
gzip fichier.logCréer fichier.log.gz et retirer l'original
gzip -k fichier.logConserver aussi le fichier original
gzip -9 -k fichier.logCompression maximale
gunzip fichier.log.gzDécompresser
gzip -dc fichier.log.gz > fichier.logDécompresser vers un nouveau fichier
zcat fichier.log.gzAfficher sans extraire
zgrep -in 'erreur' fichier.log.gzChercher dans un fichier gzip

Créer une archive ZIP

5 cmds
zip archive.zip fichier1.txt fichier2.txtCompresser plusieurs fichiers
zip -r archive.zip dossier/Compresser récursivement un dossier
zip -r archive.zip dossier/ -x '*.log' 'dossier/cache/*'Exclure des fichiers
zip -9 -r archive.zip dossier/Compression maximale
zip -u archive.zip fichier.txtMettre à jour un fichier dans l'archive

Inspecter et extraire un ZIP

7 cmds
unzip -l archive.zipLister le contenu
unzip -t archive.zipTester l'intégrité
unzip archive.zipExtraire dans le dossier courant
unzip archive.zip -d /destination/Extraire dans un dossier précis
unzip -j archive.zip -d /destination/Extraire sans recréer les sous-dossiers
unzip -n archive.zip -d /destination/Ne jamais écraser les fichiers existants
unzip -o archive.zip -d /destination/Écraser sans demander
Utiliser unzip -o avec prudence : les fichiers existants portant le même nom sont remplacés sans confirmation.

Archives chiffrées

1 cmd
zip -e -r archive.zip dossier/Demander un mot de passe pour un ZIP
Le chiffrement ZIP classique peut être insuffisant pour des données sensibles. Préférer un outil moderne comme age, GPG ou 7-Zip avec AES, puis protéger et transmettre le mot de passe séparément.

Découper une grosse archive

3 cmds
split -b 2G archive.tar.gz archive.tar.gz.part-Découper en morceaux de 2 Gio
cat archive.tar.gz.part-* > archive-reconstituee.tar.gzReconstituer l'archive
gzip -t archive-reconstituee.tar.gzVérifier après assemblage

Transférer une archive sans fichier temporaire

2 cmds
Créer localement et écrire à distance
tar -czf - dossier/ | ssh utilisateur@serveur 'cat > /backup/dossier.tar.gz'
Créer à distance et récupérer localement
ssh utilisateur@serveur 'tar -czf - -C /srv data/' > data.tar.gz
Le tiret - représente l'entrée ou la sortie standard. Une interruption réseau rendra probablement l'archive incomplète : toujours la tester ensuite.

Vérifier avec une somme de contrôle

2 cmds
sha256sum archive.tar.gz > archive.tar.gz.sha256Créer la somme
sha256sum -c archive.tar.gz.sha256Vérifier la somme

Comparer une archive tar avec le disque

2 cmds
tar -df archive.tar dossier/Comparer une archive non compressée
tar -dzf archive.tar.gz dossier/Comparer une archive gzip
Une différence de date, de taille, de contenu ou de métadonnées peut être signalée. Le résultat dépend des options utilisées lors de la création de l'archive.

Sécurité lors de l'extraction

4 cmds
● Lister le contenu avant d'extraire une archive inconnue
● Extraire d'abord dans un dossier temporaire vide
● Vérifier les chemins absolus et les séquences ../ suspectes
● Ne pas extraire une archive non fiable avec root
● Contrôler les liens symboliques et les permissions après extraction
● Tester l'intégrité et la somme de contrôle avant restauration
mkdir -p /tmp/extraction-test
tar -tf archive.tar.gz
tar -xf archive.tar.gz -C /tmp/extraction-test
find /tmp/extraction-test -maxdepth 3 -ls

Aide-mémoire rapide

8 cmds
tar -czf archive.tar.gz dossier/Créer un tar.gz
tar -tf archive.tar.gzLister
tar -xf archive.tar.gz -C destination/Extraire
gzip -k fichierCompresser un fichier en gardant l'original
gunzip fichier.gzDécompresser un gzip
zip -r archive.zip dossier/Créer un ZIP
unzip -l archive.zipLister un ZIP
unzip archive.zip -d destination/Extraire un ZIP

Aucune commande ne correspond à ce filtre.