Bonjour !
Dans notre leçon précédente, vous avez maîtrisé les boucles for et while, vous donnant le pouvoir d'automatiser des tâches répétitives. Vous avez vu comment les combiner avec des conditions if pour créer des scripts qui non seulement répètent des actions, mais prennent aussi des décisions intelligentes à chaque étape.
Aujourd'hui, nous allons assembler toutes ces pièces du puzzle. L'objectif est de créer un script pour automatiser la sauvegarde de fichiers. C'est une compétence fondamentale pour tout administrateur système, car la protection des données est une responsabilité essentielle. Ce projet concret vous permettra d'appliquer tout ce que vous avez appris : les variables, les commandes, les conditions et la logique de script.
Nous allons construire, pas à pas, un script de sauvegarde fonctionnel, réutilisable et robuste.
1. L'anatomie d'un script de sauvegarde
Une sauvegarde fiable et automatisée est comme une police d'assurance pour vos données. Pour la mettre en place, notre script aura besoin de quelques ingrédients clés :
- Une source : Le ou les dossiers que nous voulons sauvegarder.
- Une destination : L'endroit où nous allons stocker la sauvegarde.
- Un format d'archive : Pour regrouper de nombreux fichiers en un seul et le compresser pour gagner de l'espace.
- Un nom unique : Pour distinguer les sauvegardes les unes des autres, généralement en utilisant la date et l'heure.

Pour commencer en douceur, révisons les concepts de base en français : l'utilisation des variables et la "substitution de commande" pour capturer la date.
Les scripts shell - Niveau 1 - Formatux
Ce document du site Formatux nous rappelle les bases de l'écriture d'un script, notamment l'utilisation des variables et la capture du résultat d'une commande. Il contient un premier exemple simple de script de sauvegarde.
Lisez les sections suivantes pour vous rafraîchir la mémoire : Variables : Revoyez comment déclarer et utiliser une variable. L'exemple 01-backup.sh montre comment les utiliser pour les chemins de fichiers. La substitution de commande : Concentrez-vous sur la syntaxe variable=$(commande). C'est ce que nous utiliserons pour créer nos noms de fichiers dynamiques. Améliorations du script de sauvegarde : Analysez le script 02-backup-enhanced.sh. Observez comment il combine les variables et la commande date pour créer un dossier de sauvegarde unique chaque jour (backup-$(date +%j)).
Ce premier exemple utilise la commande cp (copier). C'est un bon début, mais pour une véritable sauvegarde, nous voulons créer une archive compressée, un seul fichier .tar.gz qui contient tout. C'est ce que nous allons faire maintenant.
2. Construire un script de sauvegarde robuste avec tar
Nous allons maintenant suivre un guide vidéo pour construire un script plus professionnel. Ce script utilisera la commande tar pour créer une archive, vérifiera que tout s'est bien passé et pourra même être débogué en direct.
La vidéo suivante vous guidera à travers toutes les étapes nécessaires. Nous la regarderons en plusieurs parties.
How To Create a Backup Script?
Cette vidéo de BugX, bien qu'en anglais, montre très clairement à l'écran la création d'un script de sauvegarde de A à Z. Elle est parfaite pour visualiser concrètement chaque étape.
Nous allons décortiquer cette vidéo. Pour l'instant, préparez-vous à la regarder par segments, de 01:07 à 11:33.
Étape 1 : Définir les variables et le nom du fichier
Tout bon script commence par définir des variables pour le rendre facile à lire et à modifier. Nous allons définir la source, la destination et surtout, le format de la date qui rendra chaque sauvegarde unique.
Action : Regardez le premier segment de la vidéo (de 01:07 à 04:27).
Concentrez-vous sur les points suivants :
BACKUP_SRC: La variable pour le dossier source.BACKUP_DST: La variable pour le dossier de destination.BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S): C'est la magie de la substitution de commande. La sortie de la commandedate(formatée en Année-Mois-Jour_Heure-Minute-Seconde) est stockée dans la variableBACKUP_DATE.BACKUP_FILENAME: Le nom final de notre archive, qui combine un préfixe, la date et l'extension.tar.gz.
Étape 2 : Créer l'archive et le répertoire de destination
Maintenant, nous allons utiliser la commande mkdir pour nous assurer que le dossier de destination existe, puis tar pour créer l'archive.
Action : Regardez le deuxième segment de la vidéo (de 04:27 à 06:37).
Points clés :
mkdir -p $BACKUP_DST/...: L'option-pest très utile. Elle crée le répertoire de destination et tous les répertoires parents s'ils n'existent pas, sans générer d'erreur.tar -czf ...: C'est le cœur de notre script.-c: create (créer une nouvelle archive).-z: zip (compresser l'archive avecgzip). C'est pour cela que nos fichiers se terminent par.gz.-f: file (le prochain argument est le nom du fichier d'archive à créer).
Étape 3 : Vérifier le succès de l'opération
Un script d'automatisation ne doit jamais supposer que tout s'est bien passé. Il doit vérifier. En Bash, on vérifie le code de sortie de la dernière commande exécutée.
Action : Regardez le troisième segment de la vidéo (de 06:37 à 08:07).
Ici, vous retrouvez la structure if que vous connaissez bien :
if [ $? -eq 0 ]: C'est une condition que vous verrez partout en administration système.$?est une variable spéciale qui contient le code de sortie de la dernière commande.- Par convention, un code de sortie de
0signifie "succès". Toute autre valeur signifie une erreur.
- Le script affiche donc "Backup was successful" si
tara retourné0, et "Backup failed" sinon.
Étape 4 : Apprendre en regardant les autres déboguer
Même les administrateurs expérimentés font des erreurs de frappe ou de logique. Regarder quelqu'un corriger son propre code est une excellente façon d'apprendre à résoudre ses propres problèmes.
Action : Regardez le quatrième segment de la vidéo (de 08:07 à 11:33).
Ne vous inquiétez pas si vous ne comprenez pas tout immédiatement. Observez simplement le processus :
- Il exécute le script.
- Il lit le message d'erreur (
syntax error,command not found). - Il ouvre le fichier, trouve la ligne incriminée et corrige l'erreur (un
fimanquant, un espace, un caractère mal placé). - Il ré-exécute le script pour vérifier la correction.
C'est exactement le cycle de débogage que vous suivrez.
3. À vous de jouer !
Il est temps de mettre en pratique ces concepts en créant votre propre script de sauvegarde.
Votre mission :
- Dans votre machine virtuelle Linux, créez un répertoire pour vos projets et un autre pour vos sauvegardes :
mkdir -p ~/projets/importants mkdir ~/sauvegardes - Créez quelques fichiers de test dans le répertoire
importants:touch ~/projets/importants/rapport.txt touch ~/projets/importants/plan.doc echo "Contenu secret" > ~/projets/importants/secret.txt - Créez un script nommé
mon_backup.sh. - Inspirez-vous de la vidéo et écrivez le script qui :
- Définit une variable
SOURCEpour~/projets/importantsetDESTpour~/sauvegardes. - Crée un nom de fichier d'archive unique basé sur la date et l'heure (ex:
backup-2023-10-27_15-30-00.tar.gz). - Utilise
tar -czfpour archiver le contenu du dossierSOURCEdans un fichier placé dans le dossierDEST. - Utilise une condition
if [ $? -eq 0 ]pour vérifier si la commandetara réussi. - Affiche un message clair indiquant si la sauvegarde a réussi ou échoué.
- Définit une variable
- Rendez votre script exécutable (
chmod +x mon_backup.sh) et testez-le ! Vérifiez que l'archive est bien créée dans~/sauvegardes.
Conclusion
Félicitations ! Vous avez créé un outil d'administration système concret et extrêmement utile. Vous avez combiné des variables pour la flexibilité, la substitution de commande pour des noms de fichiers dynamiques, la commande tar pour l'archivage, et des conditions pour la robustesse.
Les points clés de cette leçon :
- Structure d'un script de sauvegarde : Définir des variables pour la source, la destination et le nom du fichier.
- Timestamping : Utiliser
BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S)pour créer des sauvegardes uniques et horodatées. - Archivage : La commande
tar -czf NOM_ARCHIVE.tar.gz DOSSIER_SOURCEest votre outil principal pour créer des archives compressées. - Vérification : Toujours vérifier le succès d'une opération critique avec
if [ $? -eq 0 ].
Notre script est maintenant fonctionnel, mais il nécessite encore une exécution manuelle. Comment faire pour qu'il s'exécute tout seul, tous les jours à minuit ?
C'est là qu'intervient l'outil de planification de tâches de Linux : cron. Dans notre prochaine leçon, nous nous concentrerons entièrement sur la planification de l'exécution automatique de scripts avec cron, transformant ainsi votre script de sauvegarde en un véritable système de sauvegarde automatisé.