Initial commit: homelab scripts (backup, system update, plex recap, cronmaster trim)
This commit is contained in:
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user