fix redmine backup

This commit is contained in:
marco.locatelli@steamware.net
2026-04-02 13:09:42 +02:00
parent 8e89c6c7bc
commit 27faed361a
+21 -8
View File
@@ -4,13 +4,13 @@ set -euo pipefail
SRC="/opt/redmine/redmine_files"
BASE="/var/backups/tscale01/redmine_files"
PREFIX="redmine_files"
RETENTION_DAYS=3
TIMESTAMP="$(date '+%Y%m%d_%H%M%S')"
DEST="${BASE}/${PREFIX}-${TIMESTAMP}"
KEEP=3
LOG="/var/log/backup-redmine-files.log"
LOCK="/var/lock/backup-redmine-files.lock"
LOCK="/var/lock/redmine-files-backup.lock"
timestamp="$(date '+%Y%m%d_%H%M%S')"
DEST="${BASE}/${PREFIX}-${timestamp}"
log() {
printf "%s %s\n" "$(date '+%Y-%m-%d %H:%M:%S')" "$1" | tee -a "$LOG"
@@ -21,11 +21,15 @@ cleanup() {
}
trap cleanup EXIT
# Lock semplice
if ! ( set -o noclobber; echo "$$" > "$LOCK" ) 2>/dev/null; then
log "ERRORE: un'altra istanza è in esecuzione."
exit 1
fi
# Verifiche base
[ -d "$SRC" ] || { log "ERRORE: sorgente $SRC inesistente"; exit 1; }
mkdir -p "$BASE"
mkdir -p "$DEST"
log "Inizio snapshot → $DEST"
@@ -34,10 +38,19 @@ rsync -a --delete "$SRC"/ "$DEST"/
log "Snapshot completato."
log "Avvio retention (ultimi $RETENTION_DAYS giorni)…"
# Retention per numero: tieni gli ultimi $KEEP, cancella il resto
log "Avvio retention: mantengo ultimi $KEEP snapshot."
find "$BASE" -maxdepth 1 -type d -name "${PREFIX}-*" \
-mtime +"$RETENTION_DAYS" -print -exec rm -rf {} \;
# Lista directory in ordine dal più recente al più vecchio
snapshots=( $(ls -1dt "${BASE}/${PREFIX}-"* 2>/dev/null || true) )
if [ "${#snapshots[@]}" -gt "$KEEP" ]; then
to_delete=( "${snapshots[@]:$KEEP}" )
for dir in "${to_delete[@]}"; do
log "Elimino snapshot vecchio: $dir"
rm -rf -- "$dir"
done
fi
log "Retention completata."
exit 0