Some checks failed
odoo-restore-open_workshop-install / run-odoo-backup-in-docker (push) Failing after 35s
62 lines
2.8 KiB
Bash
62 lines
2.8 KiB
Bash
#!/bin/bash
|
|
BACKUP_DIR=/root # Verzeichnis, in dem das Backup temporär gespeichert wird.
|
|
#MONITOR_URL='https://cronitor.link/p/c6debfe4e00f46fe9eb430ab9d2b2588/7PPIpd' # Cronitor-URL zur Überwachung des Skriptstatus.
|
|
ODOO_DATABASE=hobbyhimmel # Der Name der Odoo-Datenbank, die wiederhergestellt werden soll.
|
|
DEFAULT_URL="http://hobbybackend2.fritz.box:9013" # Standard-URL für die Odoo-Datenbank-Backup-API.
|
|
URL="${1:-$DEFAULT_URL}" # Falls ein Argument übergeben wird, wird es als URL genutzt, sonst bleibt die Standard-URL.
|
|
BACKUP_NAME=${ODOO_DATABASE}.latest.zip # Der Name der Backup-Datei, wobei das aktuelle Datum an den Namen angehängt wird.
|
|
remote_directory=/www/htdocs/${sftp_user}/odoo # Das Verzeichnis auf dem Remote-SFTP-Server, in dem die Backups gespeichert werden.
|
|
|
|
# Function to report failure to Cronitor with step
|
|
# Diese Funktion meldet einen Fehler an Cronitor und beendet das Skript.
|
|
# Parameter: $1 - Der Schrittname, der beim Fehlschlag gemeldet wird.
|
|
report_failure() {
|
|
local step=$1 # Schrittname wird als erster Parameter übergeben.
|
|
echo "Error during $step" # Meldet den Fehler.
|
|
#curl "$MONITOR_URL?state=fail&message=$step" # Meldet den Fehlerstatus an Cronitor.
|
|
exit 1 # Beendet das Skript mit Exit-Code 1 (Fehler).
|
|
}
|
|
|
|
echo "Restoring Odoo database from backup..." # Meldet den Beginn der Wiederherstellung der Odoo-Datenbank.
|
|
echo "Verbindungsdaten: ${sftp_password}, ssh-${sftp_user}, ${sftp_host}"
|
|
|
|
cd /root # Wechselt in das Home-Verzeichnis des Benutzers.
|
|
# Holt die verschlüsselte Backup-Datei vom Remote-SFTP-Server in das lokale Verzeichnis.
|
|
sshpass -p "${sftp_password}" sftp -i ~/.ssh/id_rsa ssh-${sftp_user}@${sftp_host}:${remote_directory} <<EOF
|
|
get ${BACKUP_NAME}.gpg
|
|
get ${BACKUP_NAME}
|
|
EOF
|
|
# Prüft, ob der vorherige Befehl erfolgreich war, sonst bricht das Skript ab.
|
|
if [ $? -ne 0 ]; then
|
|
report_failure "SFTP transfer"
|
|
fi
|
|
cd /root
|
|
|
|
#setup gpg-agent
|
|
#echo "allow-loopback-pinentry" >> /root/.gnupg/gpg-agent.conf
|
|
#echo "use-agent" >> /root/.gnupg/gpg.conf
|
|
#gpgconf --kill gpg-agent
|
|
|
|
# Backup entschlüsseln
|
|
#echo "${gpg_password}" | gpg --batch --yes --passphrase-fd 0 --pinentry-mode loopback \
|
|
# -d "${BACKUP_DIR}/${BACKUP_NAME}.gpg" \
|
|
# > "${BACKUP_DIR}/${BACKUP_NAME}.gpg" || report_failure "Backup decryption"
|
|
|
|
|
|
curl -X POST -s \
|
|
-F "master_pwd=${ADMIN_PASSWORD}" \
|
|
-F "name=${ODOO_DATABASE}" \
|
|
${URL}/web/database/drop || report_failure "Database deletion"
|
|
|
|
curl \
|
|
-F "master_pwd=${ADMIN_PASSWORD}" \
|
|
-F "name=${ODOO_DATABASE}" \
|
|
-F "backup_file=@${BACKUP_DIR}/${BACKUP_NAME}" \
|
|
-F "backup_format=zip" \
|
|
-F "copy=true" \
|
|
${URL}/web/database/restore || report_failure "Database restoration"
|
|
|
|
# If everything was successful, report completion
|
|
# Meldet den erfolgreichen Abschluss des Skripts an Cronitor.
|
|
#curl "$MONITOR_URL?state=complete"
|