Chapitre 6 / 6
Projet : un script de sauvegarde complet
L'objectif
On combine tout ce qu'on a vu pour écrire un vrai script d'administration : sauvegarder un dossier dans une archive datée, avec vérifications, journalisation et code de retour propre.
Les redirections, en rappel
| Symbole | Effet |
|---|---|
> | rediriger la sortie (écrase) |
>> | rediriger en ajoutant |
2> | rediriger les erreurs |
| | envoyer la sortie vers une autre commande |
Le script
#!/bin/bash
# sauvegarde.sh — archive un dossier dans une destination datée.
# Usage : ./sauvegarde.sh <source> <destination>
set -euo pipefail # arrêt si erreur, variable non définie ou pipe cassé
source="$1"
destination="$2"
journal="/var/log/sauvegarde.log"
log() { echo "[$(date +%F_%T)] $1" | tee -a "$journal"; }
# 1. Vérifications
if [ "$#" -ne 2 ]; then
echo "Usage : $0 <source> <destination>"
exit 1
fi
if [ ! -d "$source" ]; then
log "ERREUR : source introuvable ($source)"
exit 1
fi
mkdir -p "$destination"
# 2. Archivage
archive="$destination/backup-$(date +%F).tar.gz"
if tar -czf "$archive" "$source"; then
log "Sauvegarde OK → $archive"
else
log "ERREUR : échec de l'archivage"
exit 1
fi
# 3. Nettoyage : garder les 7 dernières archives
ls -1t "$destination"/backup-*.tar.gz | tail -n +8 | while read vieux; do
rm -f "$vieux"
log "Ancienne archive supprimée : $vieux"
done
Ce qu'il illustre
set -euo pipefail: rend le script robuste (il s'arrête à la première erreur au lieu de continuer dans le vide).- une fonction
log()qui écrit à l'écran et dans un journal (tee -a). - des vérifications (
$#,-d) avecexit 1en cas de problème. - un enchaînement
tar … | tail | while readpour la rotation des archives.
💡 Va plus loin : ajoute une notification en fin de script (mail, ou une requête
curlvers ntfy — voir l'article de blog !), et planifie-le avec cron pour une sauvegarde automatique chaque nuit.
Félicitations 🎉
Tu as parcouru Bash de A à Z : shell, variables, conditions, boucles, fonctions et un vrai script d'administration. La suite, c'est la pratique : automatise tes propres tâches, c'est comme ça qu'on progresse le plus vite.