Introduction
Vous êtes la "Sentinelle de la Sauvegarde", le nouvel administrateur système nommé pour une startup technologique prometteuse. Une récente et légère surtension a provoqué un bug serveur, corrompant momentanément un fichier journal non critique. Bien qu'aucune donnée importante n'ait été perdue cette fois-ci, cela a servi d'avertissement sérieux.
Le CTO vous a personnellement confié une mission critique : mettre en œuvre une stratégie robuste de sauvegarde et de restauration pour le serveur d'application principal de l'entreprise, et ce, dès aujourd'hui. L'intégrité des données utilisateur, 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'actif 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 ligne, le temps presse. Au travail.
- Sautez temporairement le défi et poursuivez avec les laboratoires guidés suivants dans le parcours d'apprentissage Linux.
- Discutez avec Labby ou consultez la solution.
Identification des 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 actifs les plus importants 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 qui liste 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, avec chaque chemin sur 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 doit 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
Conseils
- 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éation d'une archive de sauvegarde complète du système
Avec la liste des répertoires critiques prête, il est temps de créer l'archive de sauvegarde. L'outil Linux standard pour cette tâche est tar (Tape Archive). Il peut regrouper plusieurs fichiers et répertoires en un seul fichier. Nous compresserons également l'archive pour économiser 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 dans
~/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'optionzdanstar).
Exemples
Après avoir créé l'archive de sauvegarde, votre répertoire backups doit 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 d'archive avec sa taille :
-rw-rw-r-- 1 labex labex 1.2K Sep 11 15:08 system-backup.tar.gz
Conseils
- Les options courantes pour créer une archive compressée avec
tarsontc(create),z(compress with gzip),v(verbose, pour voir la progression) etf(spécifier le nom du fichier). - L'option
-Tindique àtarde récupérer les noms des fichiers à archiver depuis le fichier qui suit, au lieu de la ligne de commande. - La structure de la commande ressemblera à
tar -czvf [nom_archive] -T [fichier_liste].
Vérification de l'intégrité de la sauvegarde
Une sauvegarde est inutile si elle est corrompue ou incomplète. Une étape cruciale dans 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 doit 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 dans 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
Conseils
- 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 la sortie de la commande dans un fichier.
Restauration de fichiers à partir d'une sauvegarde
La catastrophe frappe ! 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 de la Sauvegarde, de restaurer ce fichier critique depuis votre sauvegarde et de sauver la situation.
Tâches
- Simulez d'abord l'accident en supprimant le fichier
config/app.conf. - Ensuite, utilisez la commande
tarpour restaurer uniquement le fichierconfig/app.confdepuis votre archivesystem-backup.tar.gz. Le fichier doit être restauré à son emplacement d'origine.
Exigences
- Le fichier
~/project/config/app.confdoit être présent après avoir terminé la tâche. - Vous devez extraire uniquement le fichier
config/app.conf, et non l'archive entière.
Exemples
Après avoir restauré le fichier app.conf, votre répertoire config doit 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
Conseils
- 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 vers le fichier à l'intérieur de l'archive est
config/app.conf.
Planification des tâches de sauvegarde automatisées
Vous avez sauvé la situation, mais le travail d'un héros n'est jamais terminé. Se fier aux 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 l'écrasement, 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. - Le calendrier cron doit être
* * * * *pour s'exécuter chaque minute. - La commande de sauvegarde dans 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
Conseils
- Exécutez
crontab -epour ouvrir l'éditeur de tâches cron. Il se peut qu'on vous demande 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 dans 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 dir1 dir2
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 restauration. Les données de l'entreprise sont désormais sécurisées, 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 pour l'avenir.
Dans ce défi, vous avez maîtrisé plusieurs compétences fondamentales d'administration système :
- Identification des données critiques : Déterminer ce qui doit être sauvegardé.
- Création d'archives : Utiliser la commande
tarpour créer des sauvegardes compressées. - Vérification de l'intégrité : S'assurer que les sauvegardes sont valides et complètes.
- Exécution de restaurations : Extraire des fichiers spécifiques pour récupérer après une perte de données.
- Automatisation des tâches : Planifier des tâches cron pour des sauvegardes régulières et sans surveillance.
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.



