riscrittura redmine files backup

This commit is contained in:
marco.locatelli@steamware.net
2026-04-02 12:12:28 +02:00
parent a0c3fad69b
commit 8e89c6c7bc
+5 -37
View File
@@ -1,17 +1,6 @@
#!/bin/bash
#
# backup-redmine-files — snapshot giornaliero dei file Redmine
# Autore: Marco
# Descrizione:
# Crea snapshot datati del contenuto di /opt/redmine/redmine_files
# in /var/backups/tscale01/redmine_files/redmine_files-YYYYMMDD_HHMMSS
# con lock, atomicità e retention automatica.
#
set -euo pipefail
# --- Configurazione ---------------------------------------------------------
SRC="/opt/redmine/redmine_files"
BASE="/var/backups/tscale01/redmine_files"
PREFIX="redmine_files"
@@ -19,54 +8,33 @@ RETENTION_DAYS=3
TIMESTAMP="$(date '+%Y%m%d_%H%M%S')"
DEST="${BASE}/${PREFIX}-${TIMESTAMP}"
TMP="${DEST}.tmp"
LOG="/var/log/backup-redmine-files.log"
LOCK="/var/lock/backup-redmine-files.lock"
# --- Funzioni ---------------------------------------------------------------
log() {
printf "%s %s\n" "$(date '+%Y-%m-%d %H:%M:%S')" "$1" | tee -a "$LOG"
}
cleanup() {
rm -f "$LOCK"
rm -rf "$TMP"
}
trap cleanup EXIT
# --- Lock per evitare esecuzioni concorrenti -------------------------------
if ! ( set -o noclobber; echo "$$" > "$LOCK" ) 2>/dev/null; then
log "ERRORE: un'altra istanza è in esecuzione (lock presente)."
log "ERRORE: un'altra istanza è in esecuzione."
exit 1
fi
# --- Verifiche preliminari --------------------------------------------------
mkdir -p "$DEST"
if [ ! -d "$SRC" ]; then
log "ERRORE: directory sorgente $SRC non trovata."
exit 1
fi
log "Inizio snapshot → $DEST"
mkdir -p "$BASE"
# --- Copia atomica ----------------------------------------------------------
log "Inizio snapshot Redmine files → $DEST"
# Copia in directory temporanea
rsync -a --delete "$SRC"/ "$TMP"/
# Rimpiazzo atomico
mv -T "$TMP" "$DEST"
rsync -a --delete "$SRC"/ "$DEST"/
log "Snapshot completato."
# --- Retention: elimina snapshot più vecchi di N giorni ---------------------
log "Avvio retention: mantengo ultimi $RETENTION_DAYS giorni."
log "Avvio retention (ultimi $RETENTION_DAYS giorni)…"
find "$BASE" -maxdepth 1 -type d -name "${PREFIX}-*" \
-mtime +"$RETENTION_DAYS" -print -exec rm -rf {} \;