Objectifs
- Créer et extraire des archives avec
tar. - Compresser des archives avec
gzip,bzip2, ouxz. - Synchroniser des fichiers et des dossiers de manière efficace avec
rsync. - Comprendre les bases d’une stratégie de sauvegarde simple.
Explications détaillées
Notions clés
tar : L’archiveur de fichiers
tar (Tape ARchiver) est l’outil standard pour regrouper plusieurs fichiers et dossiers en un seul fichier (une “archive”). Il ne compresse pas les données par défaut, il se contente de les assembler.
- Créer une archive (
-c) :tar -cf archive.tar dossier/ - Extraire une archive (
-x) :tar -xf archive.tar - Lister le contenu (
-t) :tar -tf archive.tar - Verbeux (
-v) : Affiche les noms des fichiers pendant l’opération.
Compression : gzip, bzip2, xz
Pour réduire la taille d’une archive, on la compresse. tar peut appeler un programme de compression directement via une option.
-zpourgzip: Rapide et courant. Extension.tar.gzou.tgz.-jpourbzip2: Plus lent, mais meilleure compression. Extension.tar.bz2.-Jpourxz: Très lent, mais compression excellente. Extension.tar.xz.
La combinaison la plus courante est tar avec gzip.
rsync : La synchronisation intelligente
rsync est un outil extrêmement puissant pour copier et synchroniser des fichiers et des dossiers, localement ou à travers le réseau. Sa grande force est qu’il ne transfère que les différences entre la source et la destination, ce qui le rend très efficace pour les sauvegardes incrémentales.
L’option la plus courante est -a (archive), qui est un raccourci pour un ensemble d’options préservant les permissions, les dates, etc.
Syntaxe / Usages
# Créer une archive compressée avec gzip
# c: create, z: gzip, v: verbose, f: file
tar -czvf mon_archive.tar.gz /chemin/vers/le/dossier
# Extraire une archive .tar.gz
tar -xzvf mon_archive.tar.gz
# Extraire dans un dossier spécifique (-C)
mkdir destination && tar -xf mon_archive.tar.gz -C destination/
# Synchroniser un dossier local vers un autre (backup)
# -a: mode archive, -v: verbeux, --delete: supprime les fichiers dans la destination
# qui n'existent plus dans la source.
rsync -av --delete /chemin/source/ /chemin/destination_backup/
# Synchroniser vers un serveur distant via SSH
rsync -avz -e ssh /chemin/source/ user@serveur:/chemin/destination/
# -z: active la compression pendant le transfert
Exemples
# 1. Créer une sauvegarde de votre projet
mkdir -p mon_projet/src
echo "code" > mon_projet/src/main.py
echo "docs" > mon_projet/README.md
# Archiver et compresser le projet
tar -czvf projet_backup.tar.gz mon_projet/
# Lister le contenu pour vérifier
tar -tf projet_backup.tar.gz
# 2. Utiliser rsync pour une sauvegarde locale
mkdir -p backup_destination
rsync -av mon_projet/ backup_destination/
# Modifier un fichier dans la source
echo "updated" >> mon_projet/README.md
# Relancer rsync : seul le fichier modifié sera transféré
rsync -av mon_projet/ backup_destination/
Bonnes pratiques
- Adoptez
tar -czvfettar -xzvfcomme des réflexes pour les archives.tar.gz. - Pour les sauvegardes régulières, privilégiez
rsyncàcp. C’est beaucoup plus efficace car il ne copie que les changements. - Faites attention au slash (
/) final dans les chemins source dersync.rsync -a source/ destination/: Copie le dossiersourceà l’intérieur dedestination.rsync -a source destination/: Copie le contenu desourcedansdestination.
- Testez toujours votre processus de restauration. Une sauvegarde que vous ne savez pas restaurer ne sert à rien.
Pièges courants
- Complexité des options de
tar: Les options detarpeuvent être déroutantes. Mémorisez les combinaisons les plus courantes. - Compression excessive : Utiliser
xzsur des fichiers déjà compressés (images, vidéos) n’apportera quasiment aucun gain pour un coût en temps de calcul très élevé. - Oublier
--deleteavecrsync: Si vous voulez un miroir exact, l’option--deleteest nécessaire pour que les fichiers supprimés de la source le soient aussi dans la destination.
Exercices
-
Archivage complet :
- Créez un dossier contenant quelques fichiers texte.
- Créez une archive
.tar.gzde ce dossier. - Créez un nouveau dossier, déplacez-vous dedans, et extrayez l’archive pour vérifier que tout a fonctionné.
-
Synchronisation de base :
- Créez deux dossiers,
sourceetdestination. - Ajoutez des fichiers dans
source. - Utilisez
rsyncpour synchronisersourceversdestination. - Supprimez un fichier dans
sourceet relancezrsyncavec l’option--deletepour voir la différence.
- Créez deux dossiers,
-
Script de backup simple :
- Écrivez un script
backup.shqui :- Prend un nom de dossier en argument.
- Crée une archive
.tar.gzde ce dossier, nomméebackup-NOM_DOSSIER-DATE.tar.gz. - Affiche un message de succès avec le nom du fichier créé.
- Écrivez un script