Initial commit: homelab scripts (backup, system update, plex recap, cronmaster trim)

This commit is contained in:
2026-05-04 10:35:36 +02:00
commit 4846d9cc48
15 changed files with 1684 additions and 0 deletions
+61
View File
@@ -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