Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8a00a9f46 | ||
|
|
15f77b6bf5 | ||
|
|
42af16928f | ||
|
|
39bdfbd021 |
No files matched your search
+9
-8
@@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/eval bash
|
#!/usr/bin/eval bash
|
||||||
|
|
||||||
|
USER_CONTAINERS=
|
||||||
|
ROOT_CONTAINERS="pihole"
|
||||||
|
|
||||||
BACKUP_TARGET=/var/docker/tmp
|
BACKUP_TARGET=/var/docker/tmp
|
||||||
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
||||||
|
|
||||||
@@ -14,17 +17,15 @@ backup_daily2() {
|
|||||||
|
|
||||||
|
|
||||||
before_backup() {
|
before_backup() {
|
||||||
stop_docker
|
stop_containers
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
after_backup() {
|
after_backup() {
|
||||||
start_docker
|
let local rc=0
|
||||||
local dock=$?
|
start_containers
|
||||||
|
let rc=rc+$?
|
||||||
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
||||||
local copy=$?
|
let rc=rc+$?
|
||||||
if [ $dock -eq 0 ] && [ $copy -eq 0 ]; then
|
return $rc
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
}
|
||||||
+62
-22
@@ -1,5 +1,6 @@
|
|||||||
HOST_NAME=$(hostname -s)
|
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_MOUNT_POINT="$(realpath $HERE/../../..)" # Server/bin/backup
|
||||||
NAS_ROOT="$NAS_MOUNT_POINT/backups"
|
NAS_ROOT="$NAS_MOUNT_POINT/backups"
|
||||||
@@ -17,14 +18,16 @@ NAS_HOSTNAME=synology
|
|||||||
NAS_IP=10.4.2.20
|
NAS_IP=10.4.2.20
|
||||||
NAS_SCRIPT=/volume1/nfs/Server/bin/backup/main.sh
|
NAS_SCRIPT=/volume1/nfs/Server/bin/backup/main.sh
|
||||||
|
|
||||||
WEEKLY_DAY=1 # SO->MO
|
|
||||||
|
|
||||||
PASSPHRASE=L1rfCXu8PHMQsGL0HJWwzQYpCT7f5VboislOTHMaEV
|
PASSPHRASE=L1rfCXu8PHMQsGL0HJWwzQYpCT7f5VboislOTHMaEV
|
||||||
EXT=tgz.gpg
|
EXT=tgz.gpg
|
||||||
LIST_EXT=list
|
LIST_EXT=list
|
||||||
|
|
||||||
DOCKER="/usr/bin/docker compose -f /var/docker/run/docker-compose.yml --ansi never"
|
DOCKER="/usr/bin/docker compose -f /var/docker/run/docker-compose.yml --ansi never"
|
||||||
SYNO_USB=/usr/syno/bin/synousbdisk
|
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
|
LOG_RECIPIENT=hb242@pm.me
|
||||||
INFO=INFO
|
INFO=INFO
|
||||||
@@ -96,6 +99,7 @@ prune_logs() {
|
|||||||
# ----- db dump -----
|
# ----- db dump -----
|
||||||
|
|
||||||
dump_mariadb() {
|
dump_mariadb() {
|
||||||
|
return 0
|
||||||
log $DEBUG "$DBG dump_mariadb( $@ )"
|
log $DEBUG "$DBG dump_mariadb( $@ )"
|
||||||
local dump_dir=$1
|
local dump_dir=$1
|
||||||
local mysqlconnect="--user=root --password=snafu"
|
local mysqlconnect="--user=root --password=snafu"
|
||||||
@@ -110,17 +114,20 @@ dump_mariadb() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dump_postgresql() {
|
dump_postgresql() {
|
||||||
|
local pg_container=$1
|
||||||
|
local dump_dir=$2
|
||||||
log $DEBUG "$DBG dump_postgresql( $@ )"
|
log $DEBUG "$DBG dump_postgresql( $@ )"
|
||||||
local dump_dir=$1
|
delete_dir $dump_dir
|
||||||
|
check_directory $dump_dir
|
||||||
|
|
||||||
# users and roles
|
# users and roles
|
||||||
log $DEBUG "$DBG > \$DOCKER exec -u=postgres postgres pg_dumpall --globals-only"
|
log $DEBUG "$DBG > \$CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dumpall --globals-only"
|
||||||
$DOCKER exec -u=postgres postgres pg_dumpall --globals-only > $dump_dir/_globals.sql 2>>$LOG_FILE
|
$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\""
|
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 $($DOCKER exec -u=postgres postgres psql -t -c "select datname from pg_database where not datistemplate" 2>>$LOG_FILE); do
|
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 > \$DOCKER exec -u=postgres postgres pg_dump --create $db"
|
log $DEBUG "$DBG > \$CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dump --create $db"
|
||||||
$DOCKER exec -u=postgres postgres pg_dump --create $db > $dump_dir/$db.sql 2>>$LOG_FILE
|
$CONTAINER_EXEC_USER exec -u=postgres $pg_container pg_dump --create $db > $dump_dir/$db.sql 2>>$LOG_FILE
|
||||||
is_error $? false && return 1
|
is_error $? false && return 1
|
||||||
done
|
done
|
||||||
return 0
|
return 0
|
||||||
@@ -141,18 +148,51 @@ check_root() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start_docker() {
|
start_containers() {
|
||||||
log $DEBUG "$DBG start_docker()"
|
local let rc=0
|
||||||
log $DEBUG "$DBG > \$DOCKER up -d"
|
log $DEBUG "$DBG start_containers()"
|
||||||
$DOCKER up -d >>$LOG_FILE 2>&1
|
if [ -f /var/docker/run/docker-compose.yml ]; then
|
||||||
return $?
|
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() {
|
stop_containers() {
|
||||||
log $DEBUG "$DBG stop_docker()"
|
local let rc=0
|
||||||
log $DEBUG "$DBG > \$DOCKER down"
|
log $DEBUG "$DBG stop_containers()"
|
||||||
$DOCKER down >>$LOG_FILE 2>&1
|
if [ -f /var/docker/run/docker-compose.yml ]; then
|
||||||
return $?
|
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
|
# Zugriffsrechte für Logs und Backups setzen
|
||||||
@@ -855,8 +895,8 @@ do_export() {
|
|||||||
mail_log $INFO ">>> "
|
mail_log $INFO ">>> "
|
||||||
|
|
||||||
mail_log $INFO "$INF exporting $source_path -> $mount_point"
|
mail_log $INFO "$INF exporting $source_path -> $mount_point"
|
||||||
log $DEBUG "$DBG rsync -rti --one-file-system --delete --stats --exclude=@eaDir --exclude=.$LIST_EXT $source_path $mount_point"
|
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
|
rsync -rti --one-file-system --delete --stats --exclude=@eaDir --exclude='*'.$LIST_EXT $source_path $mount_point >>$LOG_FILE 2>&1
|
||||||
is_error $?
|
is_error $?
|
||||||
|
|
||||||
mail_log $INFO "$INF unmounting USB device $device."
|
mail_log $INFO "$INF unmounting USB device $device."
|
||||||
|
|||||||
@@ -3,7 +3,13 @@
|
|||||||
# entrypoint for all actions
|
# entrypoint for all actions
|
||||||
#
|
#
|
||||||
|
|
||||||
VER="2.1.5"
|
# 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")
|
HERE=$(dirname "$0")
|
||||||
THIS_SCRIPT=$0
|
THIS_SCRIPT=$0
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
USER_CONTAINERS="homeassistant-pod codeserver jellyfin pgadmin nextcloud-pod calibre nexus git-pod caddy"
|
||||||
|
ROOT_CONTAINERS=
|
||||||
|
|
||||||
DOCKER_ROOT=/var/docker
|
DOCKER_ROOT=/var/docker
|
||||||
BACKUP_TARGET=$DOCKER_ROOT/tmp
|
BACKUP_TARGET=$DOCKER_ROOT/tmp
|
||||||
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
||||||
@@ -21,24 +24,25 @@ backup_daily3() {
|
|||||||
|
|
||||||
|
|
||||||
before_backup() {
|
before_backup() {
|
||||||
dump_mariadb $DOCKER_ROOT/dump/mysql
|
let local rc=0
|
||||||
local mys=$?
|
#dump_mariadb $DOCKER_ROOT/dump/mysql
|
||||||
dump_postgresql $DOCKER_ROOT/dump/postgresql
|
#let rc=rc+$?
|
||||||
local pos=$?
|
dump_postgresql postgres $DOCKER_ROOT/dump/postgres
|
||||||
if [ $mys -gt 0 ] || [ $pos -gt 0 ]; then
|
let rc=rc+$?
|
||||||
|
dump_postgresql pg_nextcloud $DOCKER_ROOT/dump/pg_nextcloud
|
||||||
|
let rc=rc+$?
|
||||||
|
if [ $rc -gt 0 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
stop_docker
|
stop_containers
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
after_backup() {
|
after_backup() {
|
||||||
start_docker
|
let local rc=0
|
||||||
local dock=$?
|
start_containers
|
||||||
|
let rc=rc+$?
|
||||||
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
||||||
local copy=$?
|
let rc=rc+$?
|
||||||
if [ $dock -eq 0 ] && [ $copy -eq 0 ]; then
|
return $rc
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user