From a8a00a9f46a53ed424e1706e0aba28fd7a38ec91 Mon Sep 17 00:00:00 2001 From: Hartmut Bauer Date: Mon, 5 May 2025 02:09:02 +0200 Subject: [PATCH] =?UTF-8?q?Weitere=20podman-Anpassungen,=20DB-Dump=20ge?= =?UTF-8?q?=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hamiller.sh | 13 ++++++----- main.inc.sh | 65 ++++++++++++++++++++++++++++++++++++++--------------- main.sh | 5 ++++- nathan.sh | 26 ++++++++++++--------- 4 files changed, 73 insertions(+), 36 deletions(-) diff --git a/hamiller.sh b/hamiller.sh index b42a3c9..1b1f529 100755 --- a/hamiller.sh +++ b/hamiller.sh @@ -1,5 +1,8 @@ #!/usr/bin/eval bash +USER_CONTAINERS= +ROOT_CONTAINERS="pihole" + BACKUP_TARGET=/var/docker/tmp NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY" @@ -19,12 +22,10 @@ before_backup() { } after_backup() { + let local rc=0 start_containers - local dock=$? + let rc=rc+$? copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET" - local copy=$? - if [ $dock -eq 0 ] && [ $copy -eq 0 ]; then - return 0 - fi - return 1 + let rc=rc+$? + return $rc } diff --git a/main.inc.sh b/main.inc.sh index a4642ec..6b7d6eb 100755 --- a/main.inc.sh +++ b/main.inc.sh @@ -24,6 +24,10 @@ LIST_EXT=list DOCKER="/usr/bin/docker compose -f /var/docker/run/docker-compose.yml --ansi never" SYNO_USB=/usr/syno/bin/synousbdisk +SYSTEMCTL_USER="/usr/bin/systemctl --user --machine=container@" +SYSTEMCTL="/usr/bin/systemctl" +CONTAINER_EXEC_USER=" sudo -u container podman exec" +CONTAINER_EXEC="podman exec" LOG_RECIPIENT=hb242@pm.me INFO=INFO @@ -95,6 +99,7 @@ prune_logs() { # ----- db dump ----- dump_mariadb() { + return 0 log $DEBUG "$DBG dump_mariadb( $@ )" local dump_dir=$1 local mysqlconnect="--user=root --password=snafu" @@ -109,17 +114,20 @@ dump_mariadb() { } dump_postgresql() { + local pg_container=$1 + local dump_dir=$2 log $DEBUG "$DBG dump_postgresql( $@ )" - local dump_dir=$1 + delete_dir $dump_dir + check_directory $dump_dir # users and roles - log $DEBUG "$DBG > \$DOCKER exec -u=postgres postgres pg_dumpall --globals-only" - $DOCKER exec -u=postgres postgres pg_dumpall --globals-only > $dump_dir/_globals.sql 2>>$LOG_FILE + log $DEBUG "$DBG > \$CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dumpall --globals-only" + $CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dumpall --globals-only > $dump_dir/_globals.sql 2>>$LOG_FILE - log $DEBUG "$DBG \$DOCKER exec -u=postgres postgres psql -t -c \"select datname from pg_database where not datistemplate\"" - for db in $($DOCKER exec -u=postgres postgres psql -t -c "select datname from pg_database where not datistemplate" 2>>$LOG_FILE); do - log $DEBUG "$DBG > \$DOCKER exec -u=postgres postgres pg_dump --create $db" - $DOCKER exec -u=postgres postgres pg_dump --create $db > $dump_dir/$db.sql 2>>$LOG_FILE + log $DEBUG "$DBG \$CONTAINER_EXEC_USER exec -u=postgres $pg_container psql -t -c \"select datname from pg_database where not datistemplate\"" + for db in $($CONTAINER_EXEC_USER exec -u=postgres $pg_container psql -t -c "select datname from pg_database where not datistemplate" 2>>$LOG_FILE); do + log $DEBUG "$DBG > \$CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dump --create $db" + $CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dump --create $db > $dump_dir/$db.sql 2>>$LOG_FILE is_error $? false && return 1 done return 0 @@ -141,29 +149,50 @@ check_root() { } start_containers() { + local let rc=0 log $DEBUG "$DBG start_containers()" if [ -f /var/docker/run/docker-compose.yml ]; then log $DEBUG "$DBG > \$DOCKER up -d" $DOCKER up -d >>$LOG_FILE 2>&1 - return $? - else - log $DEBUG "$DBG > sudo systemctl start pihole" - sudo systemctl start pihole >>$LOG_FILE 2>&1 - return $? + let rc=rc+$? fi + if [ -d /var/containers ]; then + do_start_stop_containers start + let rc=rc+$? + fi + return $rc } stop_containers() { - log $DEBUG "$DBG stop_docker()" + local let rc=0 + log $DEBUG "$DBG stop_containers()" if [ -f /var/docker/run/docker-compose.yml ]; then log $DEBUG "$DBG > \$DOCKER down" $DOCKER down >>$LOG_FILE 2>&1 - return $? - else - log $DEBUG "$DBG > sudo systemctl stop pihole" - sudo systemctl stop pihole >>$LOG_FILE 2>&1 - return $? + let rc=rc+$? fi + if [ -d /var/containers ]; then + do_start_stop_containers stop + let rc=rc+$? + fi + return $rc +} + +do_start_stop_containers() { + local cmd=$1 + local let rc=0 + log $DEBUG "$DBG do_start_stop_containers() $cmd" + if [ ! -z "$ROOT_CONTAINERS" ]; then + log $DEBUG "$DBG > $SYSTEMCTL $cmd $ROOT_CONTAINERS" + $SYSTEMCTL $cmd $ROOT_CONTAINERS >>$LOG_FILE 2>&1 + let rc=rc+$? + fi + if [ ! -z "$USER_CONTAINERS" ]; then + log $DEBUG "$DBG > $SYSTEMCTL_USER $cmd $USER_CONTAINERS" + $SYSTEMCTL_USER $cmd $USER_CONTAINERS >>$LOG_FILE 2>&1 + let rc=rc+$? + fi + return $rc } # Zugriffsrechte für Logs und Backups setzen diff --git a/main.sh b/main.sh index b168ff6..597db62 100755 --- a/main.sh +++ b/main.sh @@ -3,10 +3,13 @@ # entrypoint for all actions # +# 2.1.10 05.05.2025 - Postgres-Dump auf podman umgestellt +# 2.1.9 02.05.2025 - DB-Dump erweitert, damit Dumps für mehrere postgres möglich sind +# 2.1.8 30.04.2025 - systemctl start/stop eingebaut # 2.1.7 29.04.2025 - 1. Schritt zur Umstellung auf podman # 2.1.6 29.04.2025 - weekly backup Sa->SO -VER="2.1.7" +VER="2.1.10" HERE=$(dirname "$0") THIS_SCRIPT=$0 diff --git a/nathan.sh b/nathan.sh index 65776f3..4a942d8 100755 --- a/nathan.sh +++ b/nathan.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +USER_CONTAINERS="homeassistant-pod codeserver jellyfin pgadmin nextcloud-pod calibre nexus git-pod caddy" +ROOT_CONTAINERS= + DOCKER_ROOT=/var/docker BACKUP_TARGET=$DOCKER_ROOT/tmp NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY" @@ -21,11 +24,14 @@ backup_daily3() { before_backup() { - dump_mariadb $DOCKER_ROOT/dump/mysql - local mys=$? - dump_postgresql $DOCKER_ROOT/dump/postgresql - local pos=$? - if [ $mys -gt 0 ] || [ $pos -gt 0 ]; then + let local rc=0 + #dump_mariadb $DOCKER_ROOT/dump/mysql + #let rc=rc+$? + dump_postgresql postgres $DOCKER_ROOT/dump/postgres + let rc=rc+$? + dump_postgresql pg_nextcloud $DOCKER_ROOT/dump/pg_nextcloud + let rc=rc+$? + if [ $rc -gt 0 ]; then return 1 fi stop_containers @@ -33,12 +39,10 @@ before_backup() { } after_backup() { + let local rc=0 start_containers - local dock=$? + let rc=rc+$? copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET" - local copy=$? - if [ $dock -eq 0 ] && [ $copy -eq 0 ]; then - return 0 - fi - return 1 + let rc=rc+$? + return $rc }