Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7b9cc4e15 |
No files matched your search
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# check if container services are running
|
||||||
|
|
||||||
|
UNITS="/var/containers/systemd"
|
||||||
|
FAILED=""
|
||||||
|
|
||||||
|
check_service() {
|
||||||
|
local service=$1
|
||||||
|
|
||||||
|
systemctl is-active --user --machine=container@ $service >/dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
FAILED="$FAILED $service"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
local type=$1
|
||||||
|
for i in $UNITS/$type/*.socket; do
|
||||||
|
check_service $(basename $i)
|
||||||
|
done
|
||||||
|
|
||||||
|
for i in $UNITS/$type/*.container; do
|
||||||
|
check_service $(basename $i .container).service
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check user
|
||||||
|
check system
|
||||||
|
|
||||||
|
if [ -z "$FAILED" ]; then
|
||||||
|
echo "OK All services are running"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "#" >&2
|
||||||
|
echo "# ERROR some services are not running:" >&2
|
||||||
|
echo "#" >&2
|
||||||
|
echo "# $FAILED" >&2
|
||||||
|
echo "#" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
+5
-3
@@ -3,15 +3,15 @@
|
|||||||
USER_CONTAINERS=
|
USER_CONTAINERS=
|
||||||
ROOT_CONTAINERS="pihole"
|
ROOT_CONTAINERS="pihole"
|
||||||
|
|
||||||
BACKUP_TARGET=/var/docker/tmp
|
BACKUP_TARGET=/var/containers/tmp
|
||||||
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
||||||
|
|
||||||
backup_daily1() {
|
backup_daily1() {
|
||||||
BACKUP_SOURCE="/var"
|
BACKUP_SOURCE="/var"
|
||||||
BACKUP_EXCLUDE_DIRS=(docker)
|
BACKUP_EXCLUDE_DIRS=(containers)
|
||||||
}
|
}
|
||||||
backup_daily2() {
|
backup_daily2() {
|
||||||
BACKUP_SOURCE="/var/docker"
|
BACKUP_SOURCE="/var/containers"
|
||||||
BACKUP_EXCLUDE_DIRS=(tmp)
|
BACKUP_EXCLUDE_DIRS=(tmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,5 +27,7 @@ after_backup() {
|
|||||||
let rc=rc+$?
|
let rc=rc+$?
|
||||||
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
||||||
let rc=rc+$?
|
let rc=rc+$?
|
||||||
|
check_services
|
||||||
|
let rc=rc+$?
|
||||||
return $rc
|
return $rc
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$myip" != "$MAILSERVER_IP" ]; then
|
if [ "$myip" != "$MAILSERVER_IP" ]; then
|
||||||
$REMOTE=yes
|
REMOTE=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TO=$1
|
TO=$1
|
||||||
@@ -46,9 +46,9 @@ fi
|
|||||||
# Mail body aus Datei oder STDIN holen
|
# Mail body aus Datei oder STDIN holen
|
||||||
CONTENT=$(cat ${1:--})
|
CONTENT=$(cat ${1:--})
|
||||||
|
|
||||||
MAILCMD="$PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t"
|
MAILCMD="$SUDO $PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t"
|
||||||
if [ ! -z "$REMOTE" ]; then
|
if [ ! -z "$REMOTE" ]; then
|
||||||
MAILCMD="ssh $MAILSERVER_IP \"$SUDO $MAILCMD\""
|
MAILCMD="ssh $MAILSERVER_IP \"$MAILCMD\""
|
||||||
fi
|
fi
|
||||||
# construct mail header + content and pipe to sendmail
|
# construct mail header + content and pipe to sendmail
|
||||||
cat <<EOMB | $MAILCMD
|
cat <<EOMB | $MAILCMD
|
||||||
|
|||||||
+32
-26
@@ -12,7 +12,7 @@ LOG_KEEP_DAYS=14
|
|||||||
|
|
||||||
RESTORE_PATH="$NAS_MOUNT_POINT/Server/restore"
|
RESTORE_PATH="$NAS_MOUNT_POINT/Server/restore"
|
||||||
|
|
||||||
BACKUP_MASTER_CHECK="/var/docker/vol/proxy"
|
BACKUP_MASTER_CHECK="/var/containers/vol/caddy"
|
||||||
|
|
||||||
NAS_HOSTNAME=synology
|
NAS_HOSTNAME=synology
|
||||||
NAS_IP=10.4.2.20
|
NAS_IP=10.4.2.20
|
||||||
@@ -22,7 +22,7 @@ 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_USER="/usr/bin/systemctl --user --machine=container@"
|
||||||
SYSTEMCTL="/usr/bin/systemctl"
|
SYSTEMCTL="/usr/bin/systemctl"
|
||||||
@@ -98,20 +98,20 @@ prune_logs() {
|
|||||||
|
|
||||||
# ----- db dump -----
|
# ----- db dump -----
|
||||||
|
|
||||||
dump_mariadb() {
|
#dump_mariadb() {
|
||||||
return 0
|
# 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"
|
||||||
|
#
|
||||||
log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb --silent --user=xxx --password=xxx -e \"show databases\" -B"
|
# log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb --silent --user=xxx --password=xxx -e \"show databases\" -B"
|
||||||
for db in $($DOCKER exec mysql /usr/bin/mariadb --silent $mysqlconnect -e "show databases" -B 2>>$LOG_FILE | grep -v information_schema 2>>$LOG_FILE | grep -v performance_schema 2>>$LOG_FILE | sed -e 's/\r//' 2>>$LOG_FILE); do
|
# for db in $($DOCKER exec mysql /usr/bin/mariadb --silent $mysqlconnect -e "show databases" -B 2>>$LOG_FILE | grep -v information_schema 2>>$LOG_FILE | grep -v performance_schema 2>>$LOG_FILE | sed -e 's/\r//' 2>>$LOG_FILE); do
|
||||||
log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob --user=xxx --password=xxx --databases $db"
|
# log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob --user=xxx --password=xxx --databases $db"
|
||||||
$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob $mysqlconnect --databases $db >$dump_dir/$db.sql 2>>$LOG_FILE
|
# $DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob $mysqlconnect --databases $db >$dump_dir/$db.sql 2>>$LOG_FILE
|
||||||
is_error $? false && return 1
|
# is_error $? false && return 1
|
||||||
done
|
# done
|
||||||
return 0
|
# return 0
|
||||||
}
|
#}
|
||||||
|
|
||||||
dump_postgresql() {
|
dump_postgresql() {
|
||||||
local pg_container=$1
|
local pg_container=$1
|
||||||
@@ -151,11 +151,11 @@ check_root() {
|
|||||||
start_containers() {
|
start_containers() {
|
||||||
local let rc=0
|
local let rc=0
|
||||||
log $DEBUG "$DBG start_containers()"
|
log $DEBUG "$DBG start_containers()"
|
||||||
if [ -f /var/docker/run/docker-compose.yml ]; then
|
# if [ -f /var/docker/run/docker-compose.yml ]; then
|
||||||
log $DEBUG "$DBG > \$DOCKER up -d"
|
# log $DEBUG "$DBG > \$DOCKER up -d"
|
||||||
$DOCKER up -d >>$LOG_FILE 2>&1
|
# $DOCKER up -d >>$LOG_FILE 2>&1
|
||||||
let rc=rc+$?
|
# let rc=rc+$?
|
||||||
fi
|
# fi
|
||||||
if [ -d /var/containers ]; then
|
if [ -d /var/containers ]; then
|
||||||
do_start_stop_containers start
|
do_start_stop_containers start
|
||||||
let rc=rc+$?
|
let rc=rc+$?
|
||||||
@@ -166,11 +166,11 @@ start_containers() {
|
|||||||
stop_containers() {
|
stop_containers() {
|
||||||
local let rc=0
|
local let rc=0
|
||||||
log $DEBUG "$DBG stop_containers()"
|
log $DEBUG "$DBG stop_containers()"
|
||||||
if [ -f /var/docker/run/docker-compose.yml ]; then
|
# if [ -f /var/docker/run/docker-compose.yml ]; then
|
||||||
log $DEBUG "$DBG > \$DOCKER down"
|
# log $DEBUG "$DBG > \$DOCKER down"
|
||||||
$DOCKER down >>$LOG_FILE 2>&1
|
# $DOCKER down >>$LOG_FILE 2>&1
|
||||||
let rc=rc+$?
|
# let rc=rc+$?
|
||||||
fi
|
# fi
|
||||||
if [ -d /var/containers ]; then
|
if [ -d /var/containers ]; then
|
||||||
do_start_stop_containers stop
|
do_start_stop_containers stop
|
||||||
let rc=rc+$?
|
let rc=rc+$?
|
||||||
@@ -195,6 +195,12 @@ do_start_stop_containers() {
|
|||||||
return $rc
|
return $rc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_services() {
|
||||||
|
log $DEBUG "$DBG check_services()"
|
||||||
|
$HERE/check.sh >>$LOG_FILE 2>&1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
# Zugriffsrechte für Logs und Backups setzen
|
# Zugriffsrechte für Logs und Backups setzen
|
||||||
#
|
#
|
||||||
fix_acls() {
|
fix_acls() {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
# entrypoint for all actions
|
# entrypoint for all actions
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# 2.1.14 09.05.2025 - Fix mail.sh, homeserver.target, cleared all docker references
|
||||||
|
# 2.1.13 08.05.2025 - check if services are running after backup
|
||||||
# 2.1.12 08.05.2025 - mail.sh an neuen Container angepasst
|
# 2.1.12 08.05.2025 - mail.sh an neuen Container angepasst
|
||||||
# 2.1.11 05.05.2025 - Fix DB-Dump
|
# 2.1.11 05.05.2025 - Fix DB-Dump
|
||||||
# 2.1.10 05.05.2025 - Postgres-Dump auf podman umgestellt
|
# 2.1.10 05.05.2025 - Postgres-Dump auf podman umgestellt
|
||||||
@@ -11,7 +13,7 @@
|
|||||||
# 2.1.7 29.04.2025 - 1. Schritt zur Umstellung auf podman
|
# 2.1.7 29.04.2025 - 1. Schritt zur Umstellung auf podman
|
||||||
# 2.1.6 29.04.2025 - weekly backup Sa->SO
|
# 2.1.6 29.04.2025 - weekly backup Sa->SO
|
||||||
|
|
||||||
VER="2.1.12"
|
VER="2.1.13"
|
||||||
|
|
||||||
HERE=$(dirname "$0")
|
HERE=$(dirname "$0")
|
||||||
THIS_SCRIPT=$0
|
THIS_SCRIPT=$0
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
USER_CONTAINERS="homeassistant-pod codeserver jellyfin pgadmin nextcloud-pod calibre nexus git-pod caddy.socket caddy smtp-relay roonserver"
|
USER_CONTAINERS="homeserver.target"
|
||||||
ROOT_CONTAINERS=
|
ROOT_CONTAINERS=
|
||||||
|
|
||||||
DOCKER_ROOT=/var/docker
|
#DOCKER_ROOT=/var/docker
|
||||||
CONTAINERS_ROOT=/var/containers
|
CONTAINERS_ROOT=/var/containers
|
||||||
BACKUP_TARGET=$DOCKER_ROOT/tmp
|
BACKUP_TARGET=$CONTAINERS_ROOT/tmp
|
||||||
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
||||||
|
|
||||||
backup_daily1() {
|
backup_daily1() {
|
||||||
BACKUP_SOURCE="/var"
|
BACKUP_SOURCE="/var"
|
||||||
BACKUP_EXCLUDE_DIRS=(docker)
|
BACKUP_EXCLUDE_DIRS=(containers)
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_daily2() {
|
backup_daily2() {
|
||||||
BACKUP_SOURCE="/var/docker"
|
BACKUP_SOURCE="/var/containers"
|
||||||
BACKUP_EXCLUDE_DIRS=(vol tmp)
|
BACKUP_EXCLUDE_DIRS=(vol tmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_daily3() {
|
backup_daily3() {
|
||||||
BACKUP_SOURCE="/var/docker/vol"
|
BACKUP_SOURCE="/var/containers/vol"
|
||||||
BACKUP_EXCLUDE_DIRS=()
|
BACKUP_EXCLUDE_DIRS=()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,5 +45,7 @@ after_backup() {
|
|||||||
let rc=rc+$?
|
let rc=rc+$?
|
||||||
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
|
||||||
let rc=rc+$?
|
let rc=rc+$?
|
||||||
|
check_services
|
||||||
|
let rc=rc+$?
|
||||||
return $rc
|
return $rc
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user