Script Principal
#!/bin/bash
# backup_all_sites.sh
RESTIC_REPO="/datafs/backup/restic"
RESTIC_PASSWORD_FILE="/root/.restic_password"
BASE_DIR="/cephfs/sites"
LOG_FILE="/var/log/site_backups.log"
{
echo "=== Sauvegarde démarrée le $(date) ==="
for domain in $(ls "$BASE_DIR"); do
DOMAIN_DIR="$BASE_DIR/$domain"
for site in $(ls "$DOMAIN_DIR"); do
SITE_DIR="$DOMAIN_DIR/$site"
SITE_NAME="${site}.${domain}"
echo "Sauvegarde: $SITE_NAME"
restic -r "$RESTIC_REPO" --password-file "$RESTIC_PASSWORD_FILE" backup "$SITE_DIR" --tag "$(date +%Y-%m-%d)" --tag "$SITE_NAME" --tag "auto-backup"
echo "OK: $SITE_NAME"
done
done
echo "=== Sauvegarde terminée le $(date) ==="
echo ""
} >> "$LOG_FILE" 2>&1
Configuration Préalable
1. Créer le fichier de mot de passe
echo "votre_mot_de_passe_restic" > /root/.restic_password
chmod 600 /root/.restic_password
2. Rendre le script exécutable
chmod +x backup_all_sites.sh
Utilisation
Exécution manuelle
./backup_all_sites.sh
Planification avec Cron
# Éditer la crontab
crontab -e
# Ajouter pour une exécution quotidienne à 2h du matin
0 2 * * * /chemin/vers/backup_all_sites.sh
Structure des Tags
Chaque sauvegarde est tagguée avec :
- Date : 2025-10-06
- Nom du site : demo.owlsystems.fr
- Type : auto-backup
Consultation des Logs
# Voir les derniers logs
tail -f /var/log/site_backups.log
# Rechercher un site spécifique
grep "demo.owlsystems.fr" /var/log/site_backups.log
Script de Vérification
#!/bin/bash
# verify_backups.sh
RESTIC_REPO="/datafs/backup/restic"
RESTIC_PASSWORD_FILE="/root/.restic_password"
echo "=== Vérification des sauvegardes ==="
restic -r "$RESTIC_REPO" --password-file "$RESTIC_PASSWORD_FILE" snapshots
restic -r "$RESTIC_REPO" --password-file "$RESTIC_PASSWORD_FILE" check
Gestion des Erreurs
Le script capture toutes les sorties (stdout et stderr) dans le fichier de log. En cas d'erreur :
- Vérifier le mot de passe dans
/root/.restic_password
- Vérifier les permissions du repository
- Consulter les logs détaillés
Restauration d'un Site Spécifique
#!/bin/bash
# restore_site.sh
if [ -z "$1" ]; then
echo "Usage: $0 <nom_du_site>"
echo "Exemple: $0 demo.owlsystems.fr"
exit 1
fi
SITE_NAME=$1
RESTIC_REPO="/datafs/backup/restic"
RESTIC_PASSWORD_FILE="/root/.restic_password"
DOMAIN=$(echo $SITE_NAME | cut -d. -f2)
SITE=$(echo $SITE_NAME | cut -d. -f1)
echo "Restauration de $SITE_NAME..."
cd "/cephfs/sites/$DOMAIN/"
restic -r "$RESTIC_REPO" --password-file "$RESTIC_PASSWORD_FILE" restore latest --tag "$SITE_NAME" --target ./
Avantages de cette Solution
- Automatisation complète de tous les sites
- Logs centralisés pour le monitoring
- Sécurité avec mot de passe en fichier
- Tags organisés pour restauration ciblée
- Gestion d'erreurs robuste