6 Commits
Author SHA1 Message Date
Hartmut Bauer 912d4b9434 Fix DB-Dump 2025-05-05 13:07:14 +02:00
Hartmut Bauer a8a00a9f46 Weitere podman-Anpassungen, DB-Dump geändert 2025-05-05 02:09:02 +02:00
Hartmut Bauer 15f77b6bf5 1st step to podman 2025-04-29 22:56:18 +02:00
Hartmut Bauer 42af16928f weekly SA->SO 2025-04-29 15:28:51 +02:00
Hartmut Bauer 39bdfbd021 bugfix 2025-04-15 22:49:29 +02:00
Hartmut Bauer 0cb2748447 exclude lists from export 2025-04-15 12:15:42 +02:00
4 changed files with 97 additions and 45 deletions

No files matched your search

+9 -8
View File
@@ -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"
@@ -14,17 +17,15 @@ backup_daily2() {
before_backup() {
stop_docker
stop_containers
return $?
}
after_backup() {
start_docker
local dock=$?
let local rc=0
start_containers
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
}
+63 -23
View File
@@ -1,5 +1,6 @@
HOST_NAME=$(hostname -s)
DAY=$(date +%u) # MO == 1
DAY=$(date +%u) # 1-7, MO is 1
WEEKLY_DAY=7 # SA->SO
NAS_MOUNT_POINT="$(realpath $HERE/../../..)" # Server/bin/backup
NAS_ROOT="$NAS_MOUNT_POINT/backups"
@@ -17,14 +18,16 @@ NAS_HOSTNAME=synology
NAS_IP=10.4.2.20
NAS_SCRIPT=/volume1/nfs/Server/bin/backup/main.sh
WEEKLY_DAY=1 # SO->MO
PASSPHRASE=L1rfCXu8PHMQsGL0HJWwzQYpCT7f5VboislOTHMaEV
EXT=tgz.gpg
LIST_EXT=txt
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
@@ -96,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"
@@ -110,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 -u=postgres $pg_container pg_dumpall --globals-only"
$CONTAINER_EXEC_USER -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 -u=postgres $pg_container psql -t -c \"select datname from pg_database where not datistemplate\""
for db in $($CONTAINER_EXEC_USER -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 -u=postgres $pg_container pg_dump --create $db"
$CONTAINER_EXEC_USER -u=postgres $pg_container pg_dump --create $db > $dump_dir/$db.sql 2>>$LOG_FILE
is_error $? false && return 1
done
return 0
@@ -141,18 +148,51 @@ check_root() {
fi
}
start_docker() {
log $DEBUG "$DBG start_docker()"
log $DEBUG "$DBG > \$DOCKER up -d"
$DOCKER up -d >>$LOG_FILE 2>&1
return $?
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
let rc=rc+$?
fi
if [ -d /var/containers ]; then
do_start_stop_containers start
let rc=rc+$?
fi
return $rc
}
stop_docker() {
log $DEBUG "$DBG stop_docker()"
log $DEBUG "$DBG > \$DOCKER down"
$DOCKER down >>$LOG_FILE 2>&1
return $?
stop_containers() {
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
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
@@ -855,8 +895,8 @@ do_export() {
mail_log $INFO ">>> "
mail_log $INFO "$INF exporting $source_path -> $mount_point"
log $DEBUG "$DBG rsync -rti --one-file-system --delete --stats --exclude=@eaDir $source_path $mount_point"
rsync -rti --one-file-system --delete --stats --exclude=@eaDir $source_path $mount_point >>$LOG_FILE 2>&1
log $DEBUG "$DBG rsync -rti --one-file-system --delete --stats --exclude=@eaDir --exclude='*'.$LIST_EXT $source_path $mount_point"
rsync -rti --one-file-system --delete --stats --exclude=@eaDir --exclude='*'.$LIST_EXT $source_path $mount_point >>$LOG_FILE 2>&1
is_error $?
mail_log $INFO "$INF unmounting USB device $device."
+8 -1
View File
@@ -3,7 +3,14 @@
# entrypoint for all actions
#
VER="2.1.4"
# 2.111 05.05.2025 - Fix DB-Dump
# 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.10"
HERE=$(dirname "$0")
THIS_SCRIPT=$0
+17 -13
View File
@@ -1,5 +1,8 @@
#!/usr/bin/env bash
USER_CONTAINERS="homeassistant-pod codeserver jellyfin pgadmin nextcloud-pod calibre nexus git-pod caddy.socket caddy"
ROOT_CONTAINERS=
DOCKER_ROOT=/var/docker
BACKUP_TARGET=$DOCKER_ROOT/tmp
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
@@ -21,24 +24,25 @@ 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 ncd_pg $DOCKER_ROOT/dump/nextcloud
let rc=rc+$?
dump_postgresql gitea_pg $DOCKER_ROOT/dump/gitea
let rc=rc+$?
if [ $rc -gt 0 ]; then
return 1
fi
stop_docker
stop_containers
return $?
}
after_backup() {
start_docker
local dock=$?
let local rc=0
start_containers
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
}