From 426d4f4c756e556f26697e31edb38de104869675 Mon Sep 17 00:00:00 2001 From: fpicone Date: Thu, 11 Dec 2025 17:53:33 +0100 Subject: [PATCH] add upload via http --- .secret.example | 10 ++------ backup.sh | 67 ++++++++++++++----------------------------------- 2 files changed, 21 insertions(+), 56 deletions(-) diff --git a/.secret.example b/.secret.example index 3ebcde1..88d4682 100644 --- a/.secret.example +++ b/.secret.example @@ -10,11 +10,5 @@ DB_PASS=password_mysql GOTIFY_URL="https://alert.qwince.com/message" GOTIFY_TOKEN="ABnq7pJSSPrFRjx" -# Retention (numero di giorni di conservazione backup) -RETENTION_DAYS=7 - -# Trasferimento remoto via rsync/scp -REMOTE_HOST="nas.qwince.com" -REMOTE_USER="fpicone" -REMOTE_PASS="C3llul4r3@22" -REMOTE_PATH="/volume2/CloudpanelBackup" +# Upload HTTP endpoint +UPLOAD_URL="http://192.168.0.10:8080/upload" diff --git a/backup.sh b/backup.sh index 4ee8e83..2c9c490 100644 --- a/backup.sh +++ b/backup.sh @@ -54,54 +54,19 @@ send_gotify_notification() { fi } -# Funzione per gestire la retention dei backup remoti -cleanup_old_backups() { - local retention_days="${RETENTION_DAYS:-7}" - - if [ -z "$REMOTE_HOST" ] || [ -z "$REMOTE_USER" ] || [ -z "$REMOTE_PASS" ] || [ -z "$REMOTE_PATH" ]; then - return 0 - fi - - echo "Pulizia backup remoti più vecchi di $retention_days giorni..." - - # Rimuovi i backup più vecchi sul server remoto - sshpass -p "$REMOTE_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" "find $REMOTE_PATH/$DOMAIN -name 'backup_${DOMAIN}_*.zip' -type f -mtime +$retention_days -delete" 2>/dev/null - - if [ $? -eq 0 ]; then - echo "Retention applicata con successo sul server remoto" - fi -} - -# Funzione per trasferire il backup su server remoto +# Funzione per trasferire il backup su server remoto via HTTP transfer_to_remote() { local file="$1" - if [ -z "$REMOTE_HOST" ] || [ -z "$REMOTE_USER" ] || [ -z "$REMOTE_PASS" ] || [ -z "$REMOTE_PATH" ]; then - echo "Attenzione: Configurazione remota incompleta, trasferimento saltato" + if [ -z "$UPLOAD_URL" ]; then + echo "Attenzione: URL di upload non configurato, trasferimento saltato" return 0 fi - echo "Trasferimento backup su server remoto..." + echo "Trasferimento backup su server remoto via HTTP..." - # Verifica se sshpass è installato - if ! command -v sshpass &> /dev/null; then - echo "Errore: sshpass non è installato. Installare con: apt-get install sshpass" - send_gotify_notification "⚠️ Backup Parziale" "Backup di $DOMAIN completato ma trasferimento remoto fallito: sshpass non installato" 6 - return 1 - fi - - # Crea la cartella del dominio sul server remoto se non esiste - echo "Creazione cartella remota se necessaria..." - sshpass -p "$REMOTE_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" "mkdir -p $REMOTE_PATH/$DOMAIN" 2>/dev/null - - if [ $? -ne 0 ]; then - echo "Errore durante la creazione della cartella remota" - send_gotify_notification "⚠️ Backup Parziale" "Backup di $DOMAIN completato ma creazione cartella remota fallita" 6 - return 1 - fi - - # Trasferisci il file via rsync - sshpass -p "$REMOTE_PASS" rsync -avz -e "ssh -o StrictHostKeyChecking=no" "$file" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/$DOMAIN/" + # Upload del file via curl + RESPONSE=$(curl -X POST "$UPLOAD_URL" -F "file=@$file" -s) if [ $? -ne 0 ]; then echo "Errore durante il trasferimento del backup" @@ -109,8 +74,17 @@ transfer_to_remote() { return 1 fi - echo "Backup trasferito con successo su $REMOTE_HOST" - return 0 + # Verifica la risposta + if echo "$RESPONSE" | grep -q '"status":"ok"'; then + echo "Backup trasferito con successo" + echo "Risposta server: $RESPONSE" + return 0 + else + echo "Errore: Risposta server non valida" + echo "Risposta: $RESPONSE" + send_gotify_notification "⚠️ Backup Parziale" "Backup di $DOMAIN completato ma upload fallito" 6 + return 1 + fi } # Configurazione @@ -191,15 +165,12 @@ TRANSFER_STATUS=$? if [ $TRANSFER_STATUS -eq 0 ]; then echo "Rimozione file locale..." rm -f "$ZIP_FILE" - echo "File zip rimosso dal locale, disponibile solo su $REMOTE_HOST" - - # Gestisci la retention dei backup sul server remoto - cleanup_old_backups + echo "File zip rimosso dal locale, disponibile solo sul server remoto" fi # Invia notifica di successo if [ $TRANSFER_STATUS -eq 0 ]; then - send_gotify_notification "✅ Backup Completato" "Backup di $DOMAIN completato con successo\nFile: backup_${DOMAIN}_$TIMESTAMP.zip\nDimensione: $BACKUP_SIZE\nLocation: $REMOTE_HOST:$REMOTE_PATH/$DOMAIN/" 5 + send_gotify_notification "✅ Backup Completato" "Backup di $DOMAIN completato con successo\nFile: backup_${DOMAIN}_$TIMESTAMP.zip\nDimensione: $BACKUP_SIZE\nCaricato sul server remoto" 5 else send_gotify_notification "⚠️ Backup Parziale" "Backup di $DOMAIN completato localmente\nFile: $ZIP_FILE\nDimensione: $BACKUP_SIZE\nTrasferimento remoto fallito - File mantenuto in locale" 6 fi