Script d'automatisation d'archivage, de compression de répertoires de données et de bases de données, avec rétention de 7 jours et notification intégrée.
#!/bin/bash
# ---------------------------------------------------------------
# Sauvegarde et Chiffrement Automatisés - Frédéric THIZY
# Rétention : 7 jours - Exécution quotidienne via Cron
# ---------------------------------------------------------------
BACKUP_DIR="/var/backups/infra"
DATA_DIR="/var/www/html/data"
DATE=$(date +"%Y-%m-%d_%H%M%S")
RETENTION_DAYS=7
# Initialisation du log
log_message() {
echo "[$DATE] $1" >> "$BACKUP_DIR/backup_log.txt"
}
# Création du dossier si inexistant
mkdir -p "$BACKUP_DIR"
log_message "Début du script de sauvegarde..."
# 1. Sauvegarde base de données MySQL
log_message "Dump de la base de données..."
docker exec database-container mysqldump -u root -p"secret" my_db > "$BACKUP_DIR/db_$DATE.sql"
if [ $? -eq 0 ]; then
log_message "Dump de la base de données effectué avec succès."
else
log_message "ERREUR lors du dump de la base de données."
fi
# 2. Archivage et compression des fichiers
log_message "Compression des répertoires de données..."
tar -czf "$BACKUP_DIR/data_$DATE.tar.gz" "$DATA_DIR"
if [ $? -eq 0 ]; then
log_message "Compression terminée."
else
log_message "ERREUR lors de la compression."
fi
# 3. Nettoyage des sauvegardes de plus de 7 jours (Rétention)
log_message "Application de la rétention de $RETENTION_DAYS jours..."
find "$BACKUP_DIR" -type f \( -name "db_*.sql" -o -name "data_*.tar.gz" \) -mtime +$RETENTION_DAYS -delete
log_message "Fin du processus de sauvegarde."