Variablen ausgelagert, weil sauberer

This commit is contained in:
Patrick Asmus
2026-06-07 20:02:33 +02:00
parent 15b67ab1ee
commit c45bf64738
5 changed files with 107 additions and 39 deletions
+36 -15
View File
@@ -3,25 +3,32 @@
set -Eeuo pipefail
########################################
# Konfiguration
# Script- und Konfigurationspfade
########################################
SFTP_HOST="${SFTP_HOST:-sftp.example.com}"
SFTP_PORT="${SFTP_PORT:-22}"
SFTP_USER="${SFTP_USER:-user}"
SFTP_PASS="${SFTP_PASS:-Tpassw0rd}"
SFTP_REMOTE_DIR="${SFTP_REMOTE_DIR:-/uploads}"
MAIL_TO="${MAIL_TO:-}"
MAIL_FROM="${MAIL_FROM:-}"
# Nicht /tmp verwenden: viele Systeme mounten /tmp klein oder als tmpfs.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DIR_NAME="$(basename "$SCRIPT_DIR")"
BACKUP_DIR="${BACKUP_DIR:-$(dirname "$SCRIPT_DIR")/${DIR_NAME}_backups}"
LOG_DIR="${LOG_DIR:-${BACKUP_DIR}/logs}"
KEEP_LOCAL_BACKUP="${KEEP_LOCAL_BACKUP:-false}"
MIN_FREE_MB="${MIN_FREE_MB:-1024}"
CONFIG_FILE="${CONFIG_FILE:-${SCRIPT_DIR}/docker-backup-sftp-uploader.conf}"
if [[ -f "$CONFIG_FILE" ]]; then
# shellcheck source=/dev/null
source "$CONFIG_FILE"
else
echo "FEHLER: Konfigurationsdatei nicht gefunden: $CONFIG_FILE" >&2
exit 1
fi
########################################
# Optionale Fallbacks
########################################
: "${SFTP_PORT:=22}"
: "${MAIL_TO:=}"
: "${MAIL_FROM:=}"
: "${BACKUP_DIR:=$(dirname "$SCRIPT_DIR")/${DIR_NAME}_backups}"
: "${LOG_DIR:=${BACKUP_DIR}/logs}"
: "${KEEP_LOCAL_BACKUP:=false}"
: "${MIN_FREE_MB:=1024}"
########################################
# Variablen
@@ -54,6 +61,7 @@ log() {
log "========================================="
log "Backup gestartet"
log "Projekt: $DIR_NAME"
log "Konfiguration: $CONFIG_FILE"
log "Backup-Datei: $BACKUP_PATH"
log "Log-Datei: $LOGFILE"
log "========================================="
@@ -71,6 +79,15 @@ require_command() {
fi
}
require_config_value() {
local variable_name="$1"
if [[ -z "${!variable_name:-}" ]]; then
log "FEHLER: Pflichtwert fehlt in der Konfiguration: $variable_name"
return 1
fi
}
send_mail() {
local subject="$1"
local body="$2"
@@ -255,6 +272,10 @@ require_command tar
require_command gzip
require_command sshpass
require_command sftp
require_config_value SFTP_HOST
require_config_value SFTP_USER
require_config_value SFTP_PASS
require_config_value SFTP_REMOTE_DIR
check_backup_dir_location
check_free_space