Automatiser les sauvegardes hebdomadaires : Un tutoriel simple sur les tâches Cron sous Linux
Automatisez les sauvegardes hebdomadaires Linux avec cron, rsync et tar, y compris des scripts sécurisés, des exemples de planification et des vérifications de restauration.
Automatisation des sauvegardes hebdomadaires : un tutoriel simple sur les tâches cron Linux
Les sauvegardes régulières sont la pierre angulaire d'une administration système robuste. Perdre des données critiques à cause d'une panne matérielle, d'une suppression accidentelle ou d'incidents de sécurité peut être catastrophique. Heureusement, Linux fournit des outils intégrés puissants qui, combinés au planificateur cron, permettent des sauvegardes hebdomadaires automatisées et fiables. Ce tutoriel vous guidera dans la mise en place d'un système de sauvegarde hebdomadaire simple mais efficace en utilisant des utilitaires Linux standard comme rsync et tar, gérés par cron.
Ce guide est conçu pour les utilisateurs Linux et les administrateurs système qui souhaitent mettre en œuvre une stratégie de sauvegarde automatisée. À la fin de ce tutoriel, vous comprendrez comment configurer une tâche cron pour effectuer des sauvegardes hebdomadaires des répertoires importants, garantissant ainsi la sécurité et la récupérabilité de vos données.
Pourquoi automatiser les sauvegardes ?
Les sauvegardes manuelles sont sujettes aux erreurs humaines et sont souvent négligées, surtout avec des emplois du temps chargés. L'automatisation élimine ces risques. La mise en place d'une tâche cron pour les sauvegardes hebdomadaires garantit :
- Cohérence : Les sauvegardes sont effectuées à une heure définie sans faute.
- Fiabilité : Réduit les risques d'oubli ou de négligence humaine.
- Efficacité : Libère un temps précieux pour que les administrateurs système se concentrent sur d'autres tâches critiques.
- Récupération des données : Fournit un filet de sécurité contre la perte de données, crucial pour la continuité des activités.
Choisir votre outil de sauvegarde : rsync vs. tar
Linux propose plusieurs outils pour créer des sauvegardes. Pour ce tutoriel, nous nous concentrerons sur deux utilitaires courants et puissants : rsync et tar.
rsync
rsync (synchronisation à distance) est excellent pour les sauvegardes incrémentielles. Il synchronise efficacement les fichiers et répertoires entre deux emplacements, en ne transférant que les différences. Cela le rend très rapide et économe en bande passante, surtout pour les sauvegardes ultérieures.
Principaux avantages :
- Efficace pour les sauvegardes incrémentielles.
- Peut synchroniser des emplacements locaux et distants.
- Préserve les permissions des fichiers, la propriété et les horodatages.
tar
tar (archive sur bande) est un utilitaire d'archivage polyvalent. Il peut regrouper plusieurs fichiers et répertoires en un seul fichier d'archive, souvent compressé. Il est idéal pour créer des instantanés complets de vos données.
Principaux avantages :
- Crée un seul fichier d'archive, simplifiant la gestion.
- Prend en charge diverses méthodes de compression (gzip, bzip2, xz).
- Préserve les permissions des fichiers et la propriété.
Configuration de votre répertoire de sauvegarde
Avant de commencer, il est de bonne pratique de désigner un répertoire spécifique pour stocker vos sauvegardes. Cela permet de garder vos sauvegardes organisées et séparées de vos données en direct. Pour cet exemple, nous supposerons que vos sauvegardes seront stockées dans /mnt/backups/weekly/.
Assurez-vous que ce répertoire existe et dispose des permissions appropriées. Vous pouvez également envisager de stocker les sauvegardes sur un disque physique séparé ou un stockage en réseau (NAS) pour une meilleure reprise après sinistre.
sudo mkdir -p /mnt/backups/weekly
sudo chown root:root /mnt/backups/weekly # Ou un utilisateur de sauvegarde dédié
Méthode 1 : Utilisation de rsync pour les sauvegardes incrémentielles
rsync est fantastique pour sauvegarder des répertoires où vous souhaitez conserver un historique des modifications de manière efficace. Pour une sauvegarde hebdomadaire, vous pouvez sauvegarder l'intégralité du répertoire, et rsync ne gérera que les fichiers modifiés.
Disons que vous souhaitez sauvegarder votre répertoire /home et le répertoire /etc.
1. Créer un script de sauvegarde :
Tout d'abord, créez un script shell qui effectuera la sauvegarde. Cela facilite la gestion de la commande et permet une logique plus complexe si nécessaire.
Créez un fichier nommé weekly_backup.sh dans un emplacement comme /usr/local/bin/.
#!/bin/bash
# --- Configuration ---
SOURCE_DIRS=("/home" "/etc")
BACKUP_DEST="/mnt/backups/weekly/"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
LOG_FILE="${BACKUP_DEST}backup_log_${TIMESTAMP}.log"
# --- Assurer que la destination existe ---
mkdir -p "${BACKUP_DEST}"
# --- Début de la journalisation ---
echo "Début de la sauvegarde hebdomadaire à $(date)" >> "${LOG_FILE}"
# --- Effectuer rsync ---
for dir in "${SOURCE_DIRS[@]}"; do
echo "Sauvegarde de ${dir}..." >> "${LOG_FILE}"
rsync -a --delete "${dir}/" "${BACKUP_DEST}${dir##*/}/" >> "${LOG_FILE}" 2>&1
if [ $? -eq 0 ]; then
echo "Sauvegarde réussie de ${dir}." >> "${LOG_FILE}"
else
echo "Erreur lors de la sauvegarde de ${dir}." >> "${LOG_FILE}"
fi
done
# --- Fin de la journalisation ---
echo "Sauvegarde hebdomadaire terminée à $(date)" >> "${LOG_FILE}"
echo "---------------------------" >> "${LOG_FILE}"
exit 0
Explication des options rsync :
-a(mode archive) : Une combinaison de-rlptgoD, ce qui signifie qu'il copie récursivement, préserve les liens symboliques, les permissions, les heures de modification, le groupe, le propriétaire et les fichiers spéciaux/périphériques.--delete: Supprime les fichiers superflus du répertoire de destination. Cela garantit que la sauvegarde est un miroir exact de la source. À utiliser avec prudence !${dir}/: La barre oblique à la fin du répertoire source est importante. Elle signifie "copier le contenu de ce répertoire". Sans elle, elle copierait le répertoire lui-même dans la destination.${BACKUP_DEST}${dir##*/}/: Cela construit le chemin de destination.${dir##*/}extrait le nom de base du répertoire (par exemple, 'home' de '/home').
Rendre le script exécutable :
sudo chmod +x /usr/local/bin/weekly_backup.sh
2. Tester le script :
Exécutez le script manuellement pour vous assurer qu'il fonctionne comme prévu.
sudo /usr/local/bin/weekly_backup.sh
Vérifiez le répertoire /mnt/backups/weekly/ et le fichier journal pour vérifier la sauvegarde.
Méthode 2 : Utilisation de tar pour les sauvegardes d'archive complètes
tar est idéal pour créer une seule archive compressée de vos données. Cette méthode est intéressante si vous souhaitez un instantané complet à un moment précis.
Disons que vous souhaitez sauvegarder /home et /etc dans une archive tar compressée.
1. Créer un script de sauvegarde :
Créez un fichier nommé weekly_tar_backup.sh dans /usr/local/bin/.
#!/bin/bash
# --- Configuration ---
SOURCE_DIRS=("/home" "/etc")
BACKUP_DEST="/mnt/backups/weekly/"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
ARCHIVE_NAME="backup_${TIMESTAMP}.tar.gz"
LOG_FILE="${BACKUP_DEST}backup_log_${TIMESTAMP}.log"
# --- Assurer que la destination existe ---
mkdir -p "${BACKUP_DEST}"
# --- Début de la journalisation ---
echo "Début de la sauvegarde tar hebdomadaire à $(date)" >> "${LOG_FILE}"
# --- Effectuer la sauvegarde tar ---
echo "Création de l'archive ${ARCHIVE_NAME}..." >> "${LOG_FILE}"
tar -czvf "${BACKUP_DEST}${ARCHIVE_NAME}" "${SOURCE_DIRS[@]}" >> "${LOG_FILE}" 2>&1
if [ $? -eq 0 ]; then
echo "Archive ${ARCHIVE_NAME} créée avec succès." >> "${LOG_FILE}"
else
echo "Erreur lors de la création de l'archive ${ARCHIVE_NAME}." >> "${LOG_FILE}"
fi
# --- Fin de la journalisation ---
echo "Sauvegarde tar hebdomadaire terminée à $(date)" >> "${LOG_FILE}"
echo "---------------------------" >> "${LOG_FILE}"
exit 0
Explication des options tar :
-c: Créer une nouvelle archive.-z: Filtrer l'archive via gzip pour la compression.-v: Lister les fichiers traités de manière verbeuse.-f: Utiliser le fichier d'archive ou le périphérique NOMFICHIER."${SOURCE_DIRS[@]}": Passe chaque répertoire source comme un argument séparé.
Rendez le script exécutable et testez-le :
sudo chmod +x /usr/local/bin/weekly_tar_backup.sh
sudo /usr/local/bin/weekly_tar_backup.sh
Planifier la tâche cron hebdomadaire
Une fois que votre script fonctionne manuellement, planifiez-le avec cron. Utilisez le crontab de root si le script a besoin d'autorisations pour lire les répertoires système comme /etc ou les répertoires personnels d'autres utilisateurs.
sudo crontab -e
Ajoutez l'une de ces entrées :
# Exécuter la sauvegarde rsync tous les dimanches à 2h00
0 2 * * 0 /usr/local/bin/weekly_backup.sh
# Ou exécuter la sauvegarde tar tous les dimanches à 2h30
30 2 * * 0 /usr/local/bin/weekly_tar_backup.sh
Cron utilise cet ordre de champs :
minute heure jour-du-mois mois jour-de-la-semaine commande
Sur la plupart des systèmes Linux, 0 ou 7 signifie dimanche dans le champ jour-de-la-semaine. Si votre distribution ne documente qu'une seule forme, suivez son manuel cron.
Vérifier et maintenir vos sauvegardes
Une sauvegarde n'est utile que si vous pouvez la restaurer. Ajoutez ces vérifications à votre routine :
- Consultez le dernier fichier journal après la première exécution planifiée.
- Restaurez un petit fichier de test dans un répertoire temporaire.
- Assurez-vous que la destination de sauvegarde dispose de suffisamment d'espace libre.
- Stockez au moins une copie en dehors du serveur d'origine lorsque les données sont importantes.
- Évitez de sauvegarder le répertoire de sauvegarde dans lui-même.
Pour rsync, rappelez-vous que --delete reflète les suppressions de la source. C'est utile pour une copie actuelle propre, mais ce n'est pas un substitut aux sauvegardes versionnées. Pour tar, ajoutez une politique de conservation plus tard pour que les anciennes archives ne remplissent pas le disque.
À retenir
Commencez par la tâche cron hebdomadaire la plus simple que vous puissiez tester et restaurer. Utilisez rsync lorsque vous voulez un miroir actuel, utilisez tar lorsque vous voulez des instantanés datés, et confirmez toujours la sauvegarde en restaurant un échantillon de fichier avant de vous y fier.