From 0ecae39ad55506b46d304da02824b263df92ad1d Mon Sep 17 00:00:00 2001 From: daniel-hbn Date: Fri, 23 May 2025 20:33:35 +0200 Subject: [PATCH] =?UTF-8?q?aufr=C3=A4umen=20und=20Backup=20Script=20erweit?= =?UTF-8?q?ert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 0 {Aliases => Alias/Aliases}/docker.sh | 0 {Aliases => Alias/Aliases}/git.sh | 0 {Aliases => Alias/Aliases}/terminal.sh | 0 aliases.sh => Alias/aliases.sh | 0 ...est-container-TEST-2025-05-23_20-09-11.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-15-47.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-22-32.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-25-05.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-25-52.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-28-46.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-31-25.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-31-53.sql | 20 +++++ ...est-container-TEST-2025-05-23_20-32-30.sql | 20 +++++ Backup/dump.log | 4 + Backup/mysql-dumps.sh | 80 ++++++++++++++++++ .../restic-backup-script.sh | 4 +- 18 files changed, 266 insertions(+), 2 deletions(-) delete mode 100644 .DS_Store create mode 100644 .gitignore rename {Aliases => Alias/Aliases}/docker.sh (100%) rename {Aliases => Alias/Aliases}/git.sh (100%) rename {Aliases => Alias/Aliases}/terminal.sh (100%) rename aliases.sh => Alias/aliases.sh (100%) create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-09-11.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-15-47.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-22-32.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-25-05.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-25-52.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-28-46.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-31-25.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-31-53.sql create mode 100644 Backup/Docker/mysql/Backup/mysql-backup-test-container-TEST-2025-05-23_20-32-30.sql create mode 100644 Backup/dump.log create mode 100755 Backup/mysql-dumps.sh rename restic-backup-script.sh => Backup/restic-backup-script.sh (95%) diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 3fd5d93fcf58a94d37c74e62c64ca1f8a6b8bc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOHRW;47J-x1hMIo<*ZmDb;&MN;RL+^Efp9*yc@koq|zStyrf9i z*gbCUo}Y9hnrE0SjvhYV(it|^sp8j3wnw$jLqX2t;tV(g&cJ_R05w}AKT!118E^)i zfi(m2eF#v&!mw6MpAHPE1psC+C&65L3CRhDg<-7-4}>)psHto%25UO(!Qu+TT2a%9 zt@&WvnXNQHf|7?5z-%j!?XTTZwQw(rcj>{2l$!cro v=A_mJ=s8qG;%dcp3MQ!(BUVcBAv6i>K_> "$LOG_FILE" +} + +function echo_warning() { + echo -e "\e[33m[$(date +'%Y-%m-%d %H:%M:%S')] [WARNUNG] $1\e[0m" + echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] [WARNUNG] $1" >> "$LOG_FILE" +} + +function echo_error() { + echo -e "\e[31m[$(date +'%Y-%m-%d %H:%M:%S')] [FEHLER] $1\e[0m" + echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] [FEHLER] $1" >> "$LOG_FILE" +} + +function echo_success() { + echo -e "\e[34m[$(date +'%Y-%m-%d %H:%M:%S')] [ERFOLG] $1\e[0m" + echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] [ERFOLG] $1" >> "$LOG_FILE" +} + +# Variablen +LOG_FILE="./dump.log" +BACKUP_DIR="./Docker/mysql/Backup/" +CONTAINERS=$(docker ps --filter "ancestor=mysql:8" --format "{{.Names}}") +DATE=$(TZ=Europe/Berlin date +'%Y-%m-%d_%H-%M-%S') + +# Log Datei aktualisieren +echo_info "---------- Backup gestartet: $DATE ----------" +# Überprüfen, ob das Backup-Verzeichnis existiert und ggf. erstellen +if [ ! -d "$BACKUP_DIR" ]; then + echo "Das Verzeichnis $BACKUP_DIR existiert nicht. Erstelle es..." + mkdir -p "$BACKUP_DIR" + + if [ $? -eq 0 ]; then + echo_success "Verzeichnis $BACKUP_DIR erfolgreich erstellt." + else + echo_error "Fehler beim Erstellen des Verzeichnisses $BACKUP_DIR. Skript wird abgebrochen." + exit 1 + fi +fi + +# Liste aller MySQL Container +CONTAINERS=$(docker ps --filter "ancestor=mysql:8" --format "{{.Names}}") +for CONTAINER in $CONTAINERS; do + echo_info "Gefundene Container: $CONTAINER" +done + +# Aktuelles Datum +DATE=$(TZ=Europe/Berlin date +'%Y-%m-%d_%H-%M-%S') + +# Loop über Container +for CONTAINER in $CONTAINERS; do + # Root Passwort aus Environment-Variablen oder docker secrets auslesen + MYSQL_ROOT_PASSWORD=$(docker exec $CONTAINER printenv MYSQL_ROOT_PASSWORD) + + if [ -z "$MYSQL_ROOT_PASSWORD" ]; then + echo_warning "Kein Root-Passwort für Container $CONTAINER gefunden. Skippen..." + continue + fi + + # Liste der Datenbanken im Container + DATABASES=$(docker exec $CONTAINER mysql -p"$MYSQL_ROOT_PASSWORD" -e "SHOW DATABASES;" | tail -n +2) + + # Loop über Datenbanken + Dump für jede Datenbank erstellen + for DATABASE in $DATABASES; do + # System-Datenbanken überspringen + if [[ "$DATABASE" == "information_schema" || "$DATABASE" == "performance_schema" || "$DATABASE" == "mysql" || "$DATABASE" == "sys" ]]; then + continue + fi + + # Dump erstellen + echo_info "Dump für Datenbank $DATABASE aus Container $CONTAINER erstellen..." + docker exec $CONTAINER mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --databases "$DATABASES" > "$BACKUP_DIR/$CONTAINER-$DATABASE-$DATE.sql" + done +done + +echo_info "Fertig" diff --git a/restic-backup-script.sh b/Backup/restic-backup-script.sh similarity index 95% rename from restic-backup-script.sh rename to Backup/restic-backup-script.sh index b8a567e..ace2f8a 100644 --- a/restic-backup-script.sh +++ b/Backup/restic-backup-script.sh @@ -12,8 +12,8 @@ ### Backup-Pfade ### BACKUP_PATH="/paht/to/local/directory" -### setting flag ### -set +H # +### Restic Flags ### +set +H # ????? ### Restic Konfiguration ### export RESTIC_REPOSITORY="rest:http://:/repository/"