add upload via http
This commit is contained in:
@@ -10,11 +10,5 @@ DB_PASS=password_mysql
|
|||||||
GOTIFY_URL="https://alert.qwince.com/message"
|
GOTIFY_URL="https://alert.qwince.com/message"
|
||||||
GOTIFY_TOKEN="ABnq7pJSSPrFRjx"
|
GOTIFY_TOKEN="ABnq7pJSSPrFRjx"
|
||||||
|
|
||||||
# Retention (numero di giorni di conservazione backup)
|
# Upload HTTP endpoint
|
||||||
RETENTION_DAYS=7
|
UPLOAD_URL="http://192.168.0.10:8080/upload"
|
||||||
|
|
||||||
# Trasferimento remoto via rsync/scp
|
|
||||||
REMOTE_HOST="nas.qwince.com"
|
|
||||||
REMOTE_USER="fpicone"
|
|
||||||
REMOTE_PASS="C3llul4r3@22"
|
|
||||||
REMOTE_PATH="/volume2/CloudpanelBackup"
|
|
||||||
|
|||||||
67
backup.sh
67
backup.sh
@@ -54,54 +54,19 @@ send_gotify_notification() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Funzione per gestire la retention dei backup remoti
|
# Funzione per trasferire il backup su server remoto via HTTP
|
||||||
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
|
|
||||||
transfer_to_remote() {
|
transfer_to_remote() {
|
||||||
local file="$1"
|
local file="$1"
|
||||||
|
|
||||||
if [ -z "$REMOTE_HOST" ] || [ -z "$REMOTE_USER" ] || [ -z "$REMOTE_PASS" ] || [ -z "$REMOTE_PATH" ]; then
|
if [ -z "$UPLOAD_URL" ]; then
|
||||||
echo "Attenzione: Configurazione remota incompleta, trasferimento saltato"
|
echo "Attenzione: URL di upload non configurato, trasferimento saltato"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Trasferimento backup su server remoto..."
|
echo "Trasferimento backup su server remoto via HTTP..."
|
||||||
|
|
||||||
# Verifica se sshpass è installato
|
# Upload del file via curl
|
||||||
if ! command -v sshpass &> /dev/null; then
|
RESPONSE=$(curl -X POST "$UPLOAD_URL" -F "file=@$file" -s)
|
||||||
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/"
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Errore durante il trasferimento del backup"
|
echo "Errore durante il trasferimento del backup"
|
||||||
@@ -109,8 +74,17 @@ transfer_to_remote() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Backup trasferito con successo su $REMOTE_HOST"
|
# Verifica la risposta
|
||||||
return 0
|
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
|
# Configurazione
|
||||||
@@ -191,15 +165,12 @@ TRANSFER_STATUS=$?
|
|||||||
if [ $TRANSFER_STATUS -eq 0 ]; then
|
if [ $TRANSFER_STATUS -eq 0 ]; then
|
||||||
echo "Rimozione file locale..."
|
echo "Rimozione file locale..."
|
||||||
rm -f "$ZIP_FILE"
|
rm -f "$ZIP_FILE"
|
||||||
echo "File zip rimosso dal locale, disponibile solo su $REMOTE_HOST"
|
echo "File zip rimosso dal locale, disponibile solo sul server remoto"
|
||||||
|
|
||||||
# Gestisci la retention dei backup sul server remoto
|
|
||||||
cleanup_old_backups
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Invia notifica di successo
|
# Invia notifica di successo
|
||||||
if [ $TRANSFER_STATUS -eq 0 ]; then
|
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
|
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
|
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
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user