diff --git a/core.sh b/core.sh index 239db8f..8c2661e 100644 --- a/core.sh +++ b/core.sh @@ -22,6 +22,9 @@ GOTIFY_TOKEN="ABnq7pJSSPrFRjx" # Upload HTTP endpoint UPLOAD_URL="http://192.168.0.10:8080/upload" +# Numero di copie locali da mantenere (0 = elimina dopo upload riuscito) +LOCAL_RETENTION=0 + # Ottieni la directory dello script SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SECRET_FILE="$SCRIPT_DIR/.secret.$USER" @@ -179,24 +182,45 @@ echo "File: $ZIP_FILE" echo "Dimensione: $BACKUP_SIZE" echo "==========================================" +# Funzione per mantenere solo le ultime N copie locali +cleanup_local_backups() { + local keep=$1 + if [ "$keep" -le 0 ]; then + # Rimuovi tutti i backup locali di questo dominio + find "$SCRIPT_DIR" -name "backup_${DOMAIN}_*.zip" -type f -delete + else + # Mantieni solo le ultime N copie + local count + count=$(find "$SCRIPT_DIR" -name "backup_${DOMAIN}_*.zip" -type f | wc -l) + if [ "$count" -gt "$keep" ]; then + find "$SCRIPT_DIR" -name "backup_${DOMAIN}_*.zip" -type f | sort | head -n -"$keep" | xargs rm -f + fi + fi +} + # Trasferisci il backup su server remoto transfer_to_remote "$ZIP_FILE" TRANSFER_STATUS=$? -# Se il trasferimento è riuscito, rimuovi il file locale +# Gestione copie locali in base a LOCAL_RETENTION if [ $TRANSFER_STATUS -eq 0 ]; then - echo "Rimozione file locale..." - rm -f "$ZIP_FILE" - echo "File zip rimosso dal locale, disponibile solo sul server remoto" + if [ "$LOCAL_RETENTION" -le 0 ]; then + echo "Rimozione file locale..." + rm -f "$ZIP_FILE" + echo "File zip rimosso dal locale, disponibile solo sul server remoto" + else + echo "Mantenimento ultime $LOCAL_RETENTION copie locali..." + cleanup_local_backups "$LOCAL_RETENTION" + fi send_gotify_notification "✅ [ $DOMAIN ] Backup Completato" "Data: $DATE_FORMAT\nBackup di $DOMAIN completato con successo\nFile: backup_${DOMAIN}_$TIMESTAMP.zip\nDimensione: $BACKUP_SIZE\nCaricato sul server remoto" 5 elif [ $TRANSFER_STATUS -eq 2 ]; then - # Server non disponibile - mantieni solo l'ultima copia locale + # Server non disponibile - mantieni copie locali echo "Pulizia backup precedenti..." - find "$SCRIPT_DIR" -name "backup_${DOMAIN}_*.zip" -type f ! -name "backup_${DOMAIN}_$TIMESTAMP.zip" -delete - echo "Mantenuta solo l'ultima copia locale" + cleanup_local_backups "$(( LOCAL_RETENTION > 0 ? LOCAL_RETENTION : 1 ))" + echo "Mantenute copie locali (server remoto non disponibile)" else - # Errore durante il trasferimento - mantieni solo l'ultima copia locale + # Errore durante il trasferimento - mantieni copie locali echo "Pulizia backup precedenti..." - find "$SCRIPT_DIR" -name "backup_${DOMAIN}_*.zip" -type f ! -name "backup_${DOMAIN}_$TIMESTAMP.zip" -delete + cleanup_local_backups "$(( LOCAL_RETENTION > 0 ? LOCAL_RETENTION : 1 ))" send_gotify_notification "⚠️ Backup Parziale" "Data: $DATE_FORMAT\nBackup di $DOMAIN completato localmente\nFile: backup_${DOMAIN}_$TIMESTAMP.zip\nDimensione: $BACKUP_SIZE\nTrasferimento remoto fallito - File mantenuto in locale" 6 fi