62 lines
2.0 KiB
Bash
Executable File
62 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================
|
|
# backup_immich_usb.sh — Backup Immich → clé USB /backup
|
|
# Exclut : postgres (géré séparément), thumbs, encoded-video
|
|
# ============================================================
|
|
|
|
SOURCE="/mnt/serveurNAS/Immich/"
|
|
DEST="/backup/immich/"
|
|
LOGFILE="/var/log/backup_immich_usb.log"
|
|
DATE=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
echo "[$DATE] === Début backup Immich → USB ===" >> "$LOGFILE"
|
|
|
|
# Monter la clé USB si elle ne l'est pas déjà (l'automount systemd peut être inactif après débranchement)
|
|
mount /backup 2>/dev/null || true
|
|
|
|
# Vérifier que la clé USB est bien montée
|
|
if ! mountpoint -q /backup; then
|
|
echo "[$DATE] ERREUR: /backup n'est pas monté (clé USB absente ?)" >> "$LOGFILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Vérifier espace disponible (alerte si < 5 Go)
|
|
AVAIL=$(df /backup | awk 'NR==2 {print $4}')
|
|
AVAIL_GB=$((AVAIL / 1024 / 1024))
|
|
echo "[$DATE] Espace disponible sur clé USB: ${AVAIL_GB} Go" >> "$LOGFILE"
|
|
if [ "$AVAIL_GB" -lt 5 ]; then
|
|
echo "[$DATE] AVERTISSEMENT: Moins de 5 Go disponibles sur la clé USB !" >> "$LOGFILE"
|
|
fi
|
|
|
|
# Créer le dossier destination
|
|
mkdir -p "$DEST"
|
|
|
|
# Rsync — copie uniquement les fichiers modifiés
|
|
# Exclut : postgres (base de données), thumbs et encoded-video (régénérables)
|
|
rsync -av \
|
|
--no-perms --no-owner --no-group \
|
|
--exclude='postgres/' \
|
|
--exclude='thumbs/' \
|
|
--exclude='encoded-video/' \
|
|
--delete \
|
|
--progress \
|
|
--stats \
|
|
"$SOURCE" "$DEST" >> "$LOGFILE" 2>&1
|
|
|
|
EXIT_CODE=$?
|
|
DATE_END=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
echo "[$DATE_END] ✅ Backup terminé avec succès" >> "$LOGFILE"
|
|
# Taille finale
|
|
SIZE=$(du -sh "$DEST" 2>/dev/null | cut -f1)
|
|
echo "[$DATE_END] Taille backup: $SIZE" >> "$LOGFILE"
|
|
else
|
|
echo "[$DATE_END] ❌ Backup terminé avec erreurs (code: $EXIT_CODE)" >> "$LOGFILE"
|
|
fi
|
|
|
|
echo "[$DATE_END] === Fin backup ===" >> "$LOGFILE"
|
|
echo "" >> "$LOGFILE"
|
|
|
|
exit $EXIT_CODE
|