Introduction
Vous êtes la « Sentinelle des Sauvegardes », le nouvel administrateur système d'une start-up technologique prometteuse. Récemment, une légère surtension a provoqué un bug sur le serveur, corrompant momentanément un fichier journal non critique. Bien qu'aucune donnée importante n'ait été perdue cette fois-ci, l'incident a servi d'avertissement sérieux.
Le CTO vous a personnellement confié une mission cruciale : mettre en œuvre une stratégie robuste de sauvegarde et de récupération pour le serveur d'application principal de l'entreprise, et ce, dès aujourd'hui. L'intégrité des données utilisateurs, des configurations d'application et des journaux vitaux est désormais entre vos mains.
C'est votre moment de briller. En réussissant à créer, vérifier et automatiser le processus de sauvegarde, vous ne protégerez pas seulement l'atout le plus précieux de l'entreprise — ses données — mais vous prouverez également que vous êtes un gardien indispensable de son infrastructure numérique. Le système est en production, le temps presse. Au travail !
- Passez temporairement le défi et continuez avec les Labs Guidés suivants du parcours d'apprentissage Linux.
- Discutez avec Labby ou consultez la solution.
Identifier les données critiques pour la sauvegarde
Avant de créer une sauvegarde, votre première tâche consiste à identifier les données critiques. Une sauvegarde complète du système est souvent peu pratique. Pour notre serveur d'application, les ressources les plus importantes se trouvent dans les répertoires data, config et logs.
Pour rendre notre processus de sauvegarde propre et gérable, nous allons créer un fichier listant tous les répertoires que nous souhaitons sauvegarder. Cette liste servira de manifeste pour notre script de sauvegarde.
Tâches
- Créez un fichier nommé
backup-list.txtdans le répertoire~/project. - Ce fichier doit contenir les chemins relatifs vers les trois répertoires critiques, chaque chemin occupant une nouvelle ligne.
Exigences
- Le fichier doit être nommé exactement
backup-list.txt. - Le fichier doit être situé dans le répertoire
~/project. - Le fichier doit contenir les trois entrées suivantes, chacune sur sa propre ligne :
dataconfiglogs
Exemples
Après avoir créé le fichier backup-list.txt, votre répertoire de projet devrait contenir le nouveau fichier manifeste aux côtés des répertoires existants :
~/project/
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/
Lorsque vous exécutez cat backup-list.txt, vous devriez voir les trois répertoires critiques listés :
data
config
logs
Astuces
- Vous pouvez utiliser un éditeur de texte comme
nanopour créer et modifier le fichier. - Alternativement, vous pouvez utiliser la commande
echoavec la redirection de sortie (>) pour créer le fichier et (>>) pour y ajouter du contenu.
Créer une archive de sauvegarde du système
Maintenant que la liste des répertoires critiques est prête, il est temps de créer l'archive de sauvegarde. L'outil standard sous Linux pour cette tâche est tar (Tape Archive). Il permet de regrouper plusieurs fichiers et répertoires dans un seul fichier. Nous allons également compresser l'archive pour gagner de l'espace en utilisant gzip.
Tâches
- Utilisez la commande
tarpour créer une archive de sauvegarde compressée. - L'archive doit être nommée
system-backup.tar.gz. - L'archive doit être placée dans le répertoire
~/project/backups/. - Le contenu de l'archive doit être déterminé par le fichier
backup-list.txtque vous avez créé à l'étape précédente.
Exigences
- L'archive finale doit être située à l'emplacement
~/project/backups/system-backup.tar.gz. - Vous devez utiliser la commande
tar. - Vous devez utiliser l'option
-Tavectarpour lire la liste des fichiers/répertoires depuisbackup-list.txt. - L'archive doit être compressée avec
gzip(utilisez l'optionzdetar).
Exemples
Après avoir créé l'archive de sauvegarde, votre répertoire backups devrait contenir la nouvelle archive compressée :
~/project/backups/
└── system-backup.tar.gz
Lorsque vous exécutez ls -lh ~/project/backups/, vous devriez voir le fichier archive avec sa taille :
-rw-rw-r-- 1 labex labex 1.2K Sep 11 15:08 system-backup.tar.gz
Astuces
- Les options courantes pour créer une archive compressée avec
tarsontc(créer),z(compresser avec gzip),v(verbeux, pour voir la progression) etf(spécifier le nom du fichier). - L'option
-Tindique àtarde récupérer les noms des fichiers à archiver dans le fichier qui suit, plutôt que sur la ligne de commande. - La structure de la commande ressemblera à quelque chose comme
tar -czvf [nom_archive] -T [fichier_liste].
Vérifier l'intégrité de la sauvegarde
Une sauvegarde est inutile si elle est corrompue ou incomplète. Une étape cruciale de toute stratégie de sauvegarde est la vérification. Vous devez vous assurer que l'archive que vous avez créée contient tous les fichiers prévus et qu'elle est lisible.
Tâches
- Utilisez la commande
tarpour lister le contenu de l'archivesystem-backup.tar.gzsans l'extraire. - Redirigez la sortie de cette commande vers un nouveau fichier nommé
backup-contents.txtdans le répertoire~/project.
Exigences
- Vous devez créer un fichier nommé
backup-contents.txtdans~/project. - Ce fichier doit contenir la liste de tous les fichiers et répertoires stockés dans
system-backup.tar.gz. - N'extrayez pas les fichiers ; listez-les uniquement.
Exemples
Après avoir créé le fichier de vérification, votre répertoire de projet devrait contenir le nouveau fichier backup-contents.txt :
~/project/
├── backup-contents.txt
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/
Lorsque vous exécutez cat backup-contents.txt, vous devriez voir une liste détaillée de tous les fichiers de l'archive :
drwxrwxr-x labex/labex 0 2025-09-11 15:08 data/
-rw-rw-r-- labex/labex 46 2025-09-11 15:08 data/transactions.csv
drwxrwxr-x labex/labex 0 2025-09-11 15:08 config/
-rw-rw-r-- labex/labex 72 2025-09-11 15:08 config/app.conf
drwxrwxr-x labex/labex 0 2025-09-11 15:08 logs/
-rw-rw-r-- labex/labex 49 2025-09-11 15:08 logs/app.log
Astuces
- La commande
tarpossède une option pour lister (t) le contenu d'une archive. - Combinez l'option
tavecz(pour gzip),v(pour une liste détaillée) etf(pour spécifier le fichier). - Utilisez l'opérateur de redirection de sortie
>pour enregistrer le résultat de la commande dans un fichier.
Restaurer des fichiers à partir d'une sauvegarde
C'est la catastrophe ! Un développeur junior, en essayant de libérer de l'espace, a accidentellement supprimé le fichier de configuration principal de l'application, app.conf. L'application est maintenant hors service. C'est à vous, la Sentinelle des Sauvegardes, de restaurer ce fichier critique à partir de votre sauvegarde et de sauver la mise.
Tâches
- Tout d'abord, simulez l'accident en supprimant le fichier
config/app.conf. - Ensuite, utilisez la commande
tarpour restaurer uniquement le fichierconfig/app.confà partir de votre archivesystem-backup.tar.gz. Le fichier doit être restauré à son emplacement d'origine.
Exigences
- Le fichier
~/project/config/app.confdoit être présent une fois la tâche terminée. - Vous devez extraire uniquement le fichier
config/app.conf, et non l'intégralité de l'archive.
Exemples
Après avoir restauré le fichier app.conf, votre répertoire config devrait contenir le fichier restauré :
~/project/config/
├── app.conf
└── ...
Lorsque vous exécutez ls -l ~/project/config/app.conf, vous devriez voir le fichier restauré :
-rw-rw-r-- 1 labex labex 72 Sep 11 15:08 /home/labex/project/config/app.conf
Vous pouvez vérifier que le contenu du fichier est correct en vérifiant qu'il contient la configuration attendue :
## Cela devrait afficher les paramètres de la base de données et de la clé API
cat ~/project/config/app.conf
Astuces
- La commande
rmest utilisée pour supprimer des fichiers. - La commande
tarutilise l'optionxpour extraire des fichiers. - Pour extraire un fichier spécifique, vous pouvez ajouter son chemin (tel qu'il apparaît dans l'archive) à la fin de la commande
tar -x. - Le chemin complet du fichier à l'intérieur de l'archive est
config/app.conf.
Planifier des tâches de sauvegarde automatisées
Vous avez sauvé la mise, mais le travail d'un héros n'est jamais terminé. Se fier à des sauvegardes manuelles est risqué. La dernière étape consiste à automatiser le processus afin que les sauvegardes soient créées régulièrement sans intervention humaine. Pour cela, nous utiliserons cron, le planificateur de tâches standard de Linux.
Tâches
- Créez une tâche cron qui exécute automatiquement une commande de sauvegarde.
- La tâche doit s'exécuter chaque minute (pour les besoins de ce défi).
- La commande doit créer une nouvelle archive
tarcompressée dans le répertoire~/project/backups/. - Pour éviter d'écraser les fichiers précédents, chaque nouveau fichier de sauvegarde doit avoir un nom unique incluant un horodatage (par exemple,
backup-2023-10-27_15-30-00.tar.gz).
Exigences
- Vous devez utiliser
crontab -epour modifier vos tâches cron. - La planification cron doit être
* * * * *pour s'exécuter chaque minute. - La commande de sauvegarde à l'intérieur de la tâche cron doit utiliser des chemins absolus pour le répertoire de sortie et les répertoires sources (par exemple,
/home/labex/project/backups). - Le nom du fichier de sauvegarde doit inclure un horodatage.
Exemples
Après avoir configuré la tâche cron, vous pouvez vérifier qu'elle fonctionne en consultant votre crontab et en attendant que les sauvegardes automatiques apparaissent. Lorsque vous exécutez crontab -l, vous devriez voir votre nouvelle tâche de sauvegarde :
## Exemple de sortie (votre commande exacte peut varier)
* * * * * tar -czf /home/labex/project/backups/backup-$(date +\%Y-\%m-\%d_\%H-\%M-\%S).tar.gz -C /home/labex/project data config logs
Après une minute ou deux, votre répertoire backups devrait commencer à afficher des fichiers de sauvegarde horodatés :
~/project/backups/
├── backup-2025-09-11_15-30-00.tar.gz
├── backup-2025-09-11_15-31-00.tar.gz
├── backup-2025-09-11_15-32-00.tar.gz
└── system-backup.tar.gz
Astuces
- Exécutez
crontab -epour ouvrir l'éditeur de tâches cron. On vous demandera peut-être de choisir un éditeur ;nanoest un bon choix. - Le format d'une tâche cron est :
[minute] [heure] [jour_du_mois] [mois] [jour_de_la_semaine] [commande].* * * * *signifie chaque minute de chaque heure de chaque jour. - Vous pouvez utiliser la commande
datepour générer un horodatage. Par exemple,date +%Y-%m-%d_%H-%M-%Sproduira un format comme2023-10-27_15-30-00. - Pour utiliser la sortie d'une commande à l'intérieur d'une autre commande, utilisez
$(commande). - Important : Dans une crontab, le signe pourcentage (
%) a une signification spéciale (il est traité comme un saut de ligne). Vous devez l'échapper avec une barre oblique inverse (\%) lorsque vous l'utilisez avec la commandedate. - Votre commande finale dans la crontab pourrait ressembler à :
* * * * * tar -czf /chemin/vers/backup-$(date +\%F_\%T).tar.gz -C /chemin/vers/source rep1 rep2
Résumé
Félicitations, Sentinelle ! Vous avez conçu et mis en œuvre avec succès une stratégie complète et automatisée de sauvegarde et de récupération. Les données de l'entreprise sont désormais en sécurité grâce à votre diligence et à vos compétences. Vous avez non seulement évité une crise potentielle, mais vous avez également établi un système qui protégera l'entreprise à l'avenir.
Dans ce défi, vous avez maîtrisé plusieurs compétences fondamentales d'administration système :
- Identifier les données critiques : Déterminer précisément ce qui doit être sauvegardé.
- Créer des archives : Utiliser la commande
tarpour créer des sauvegardes compressées. - Vérifier l'intégrité : S'assurer que les sauvegardes sont valides et complètes.
- Effectuer des restaurations : Extraire des fichiers spécifiques pour récupérer après une perte de données.
- Automatiser les tâches : Planifier des tâches cron pour des sauvegardes régulières et autonomes.
Ce sont des compétences essentielles et concrètes pour tout administrateur système Linux, développeur ou ingénieur DevOps. Vous avez prouvé que vous avez ce qu'il faut pour être un gardien fiable des systèmes critiques.



