From 8e89c6c7bc83a695c4f4482132df39dab2a20f00 Mon Sep 17 00:00:00 2001 From: "marco.locatelli@steamware.net" Date: Thu, 2 Apr 2026 12:12:28 +0200 Subject: [PATCH] riscrittura redmine files backup --- redmine-files-backup/redmine-files-backup.sh | 42 +++----------------- 1 file changed, 5 insertions(+), 37 deletions(-) diff --git a/redmine-files-backup/redmine-files-backup.sh b/redmine-files-backup/redmine-files-backup.sh index 5eadddf..8d45e11 100644 --- a/redmine-files-backup/redmine-files-backup.sh +++ b/redmine-files-backup/redmine-files-backup.sh @@ -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 {} \;