Sauvegardes automatisées : créer un script Bash robuste avec gestion des erreurs¶
Résumé
L'automatisation des sauvegardes est essentielle en administration système. Un script Bash pour sauvegarder des données ne se limite pas à copier des fichiers : il doit gérer les erreurs, logger ses actions et s'assurer que l'espace disque est suffisant. Dans ce tutoriel, nous allons créer un script complet et fiable.
| Propriété | Valeur |
|---|---|
| Difficulté | Intermédiaire |
| OS / Environnement | Linux |
| Dernière mise à jour | 2026-06-13 |
Contexte¶
La plupart des scripts de sauvegarde débutants se résument à une simple commande tar ou rsync planifiée dans le cron. Mais que se passe-t-il si le dossier source n'existe pas ? Si le disque de destination est plein ? Si la commande échoue en plein milieu ? Un script robuste doit anticiper ces problèmes, s'arrêter en cas d'erreur critique, et enregistrer ce qui s'est passé dans un fichier de journalisation (log).
Prérequis¶
- Une machine Linux avec accès à un terminal.
- Des connaissances de base sur la ligne de commande (navigation, création de fichiers).
- L'utilitaire
tarinstallé (présent par défaut sur la quasi-totalité des distributions).
Procédure¶
Étape 1 : Structure de base et bonnes pratiques¶
Pour qu'un script Bash soit robuste, il faut utiliser des options spécifiques au début du fichier.
Créez un fichier backup.sh :
Ajoutez l'en-tête suivant :
Étape 2 : Fonction de journalisation (Logging)¶
Au lieu d'utiliser de simples echo, nous allons créer une fonction pour horodater chaque message et l'écrire à la fois dans la console et dans le fichier de log.
Ajoutez ceci à votre script :
| backup.sh | |
|---|---|
Étape 3 : Vérifications préalables¶
Avant de commencer la sauvegarde, le script doit s'assurer que l'environnement est prêt.
Étape 4 : Exécution de la sauvegarde avec gestion d'erreurs¶
Nous allons utiliser tar pour compresser les données. Grâce à set -e, si tar échoue, le script s'arrêtera, mais nous pouvons capturer la réussite ou l'échec pour logger correctement l'événement en désactivant temporairement cette option ou en utilisant une structure conditionnelle classique.
Étape 5 : Test du script¶
-
Rendez le script exécutable :
-
Créez des dossiers de test pour éviter d'utiliser
/var/www/htmlen root, ou exécutez-le avecsudo:
Vérification¶
Pour vérifier que tout s'est bien passé, consultez le fichier de log :
Résultat attendu
Vous devriez voir une sortie similaire :
[2026-06-13 12:00:01] === Début de la sauvegarde ===
[2026-06-13 12:00:01] INFO : Démarrage de l'archive vers /mnt/sauvegardes/backup_2026-06-13_12-00-01.tar.gz...
[2026-06-13 12:00:03] SUCCÈS : Sauvegarde terminée avec succès.
[2026-06-13 12:00:03] INFO : Taille de la sauvegarde : 45M
[2026-06-13 12:00:03] === Fin de la sauvegarde ===
Ressources¶
- Manuel GNU Bash (set builtin) — Documentation officielle des options
set - Advanced Bash-Scripting Guide — Guide très complet pour la création de scripts Bash complexes.