JOUR 09 : La Sentinelle des Sauvegardes

LinuxBeginner
Pratiquer maintenant

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 !

Avis Important
Les défis suivants peuvent dépasser le cadre du cours Prise en main rapide de Linux.
Si vous rencontrez des difficultés pendant le défi :
  1. Passez temporairement le défi et continuez avec les Labs Guidés suivants du parcours d'apprentissage Linux.
  2. 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.txt dans 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 :
    • data
    • config
    • logs

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 nano pour créer et modifier le fichier.
  • Alternativement, vous pouvez utiliser la commande echo avec 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 tar pour 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.txt que 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 -T avec tar pour lire la liste des fichiers/répertoires depuis backup-list.txt.
  • L'archive doit être compressée avec gzip (utilisez l'option z de tar).

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 tar sont c (créer), z (compresser avec gzip), v (verbeux, pour voir la progression) et f (spécifier le nom du fichier).
  • L'option -T indique à tar de 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 tar pour lister le contenu de l'archive system-backup.tar.gz sans l'extraire.
  • Redirigez la sortie de cette commande vers un nouveau fichier nommé backup-contents.txt dans le répertoire ~/project.

Exigences

  • Vous devez créer un fichier nommé backup-contents.txt dans ~/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 tar possède une option pour lister (t) le contenu d'une archive.
  • Combinez l'option t avec z (pour gzip), v (pour une liste détaillée) et f (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

  1. Tout d'abord, simulez l'accident en supprimant le fichier config/app.conf.
  2. Ensuite, utilisez la commande tar pour restaurer uniquement le fichier config/app.conf à partir de votre archive system-backup.tar.gz. Le fichier doit être restauré à son emplacement d'origine.

Exigences

  • Le fichier ~/project/config/app.conf doit ê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 rm est utilisée pour supprimer des fichiers.
  • La commande tar utilise l'option x pour 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 tar compressé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 -e pour 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 -e pour ouvrir l'éditeur de tâches cron. On vous demandera peut-être de choisir un éditeur ; nano est 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 date pour générer un horodatage. Par exemple, date +%Y-%m-%d_%H-%M-%S produira un format comme 2023-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 commande date.
  • 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 tar pour 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.

✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer✨ Vérifier la solution et pratiquer