From aa817f5dffd38b244f2e4853d794d92f7d5556db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=94=91=E1=99=85=E1=95=BC=EA=99=86=E1=99=8E=E1=97=A3?= =?UTF-8?q?=E1=98=9CO=E1=97=A3?= <1+schiwagoa@no-reply@retronerd.at> Date: Sun, 7 Jun 2026 16:13:42 +0000 Subject: [PATCH] script erstellen --- docker-backup-sftp-uploader.sh | 146 +++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 docker-backup-sftp-uploader.sh diff --git a/docker-backup-sftp-uploader.sh b/docker-backup-sftp-uploader.sh new file mode 100644 index 0000000..b66b8b2 --- /dev/null +++ b/docker-backup-sftp-uploader.sh @@ -0,0 +1,146 @@ +#!/bin/bash + +set -o pipefail + +######################################## +# Konfiguration +######################################## + +SFTP_HOST="sftp.example.com" +SFTP_PORT="22" +SFTP_USER="user" +SFTP_PASS="Tpassw0rd" +SFTP_REMOTE_DIR="/uploads" + +MAIL_TO="" +MAIL_FROM="" + +######################################## +# Variablen +######################################## + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +DIR_NAME="$(basename "$SCRIPT_DIR")" + +DATE=$(date +"%Y-%m-%d_%H-%M-%S") +BACKUP_FILE="${DIR_NAME}_${DATE}.tar.gz" + +LOGFILE="/tmp/${DIR_NAME}_backup.log" + +######################################## +# Logging +######################################## + +exec > >(tee -a "$LOGFILE") +exec 2>&1 + +echo "=========================================" +echo "Backup gestartet: $(date)" +echo "Projekt: $DIR_NAME" +echo "=========================================" + +######################################## +# Fehlerbehandlung +######################################## + +send_error_mail() { + + SUBJECT="❌ Backup FEHLGESCHLAGEN - ${DIR_NAME}" + + mail -s "$SUBJECT" "$MAIL_TO" < "$LOGFILE" +} + +send_success_mail() { + + SIZE=$(du -h "/tmp/${BACKUP_FILE}" | awk '{print $1}') + + mail -s "✅ Backup erfolgreich - ${DIR_NAME} (${SIZE})" "$MAIL_TO" << EOF + +Backup erfolgreich abgeschlossen. + +Projekt: +${DIR_NAME} + +Datum: +$(date) + +Backup: +${BACKUP_FILE} + +Größe: +${SIZE} + +Log: + +$(cat "$LOGFILE") + +EOF +} + +trap 'send_error_mail; exit 1' ERR + +######################################## +# Docker stoppen +######################################## + +cd "$SCRIPT_DIR" + +echo "Stoppe Docker..." + +docker compose down + +######################################## +# Archiv erstellen +######################################## + +echo "Erstelle Backup..." + +tar \ + --same-owner \ + --preserve-permissions \ + -czpf "/tmp/${BACKUP_FILE}" \ + -C "$(dirname "$SCRIPT_DIR")" \ + "$DIR_NAME" + +######################################## +# Docker starten +######################################## + +echo "Starte Docker..." + +docker compose up -d + +######################################## +# Upload +######################################## + +echo "Upload nach ${SFTP_HOST}..." + +sshpass -p "$SFTP_PASS" sftp \ + -oPort="$SFTP_PORT" \ + -oStrictHostKeyChecking=no \ + "${SFTP_USER}@${SFTP_HOST}" << EOF + +cd ${SFTP_REMOTE_DIR} +put /tmp/${BACKUP_FILE} +bye +EOF + +echo "Upload erfolgreich." + +######################################## +# Erfolgsmail +######################################## + +send_success_mail + +######################################## +# Aufräumen +######################################## + +rm -f "/tmp/${BACKUP_FILE}" + +echo "Backup beendet: $(date)" +exec 1>&- +exec 2>&- +exit 0