7 Commits
Author SHA1 Message Date
Hartmut Bauer bf8c226bbe prevent ssh errors 2025-05-11 17:38:29 +02:00
Hartmut Bauer 5696e01322 fix remote backup 2025-05-11 15:19:04 +02:00
Hartmut Bauer f96447d0e7 split daily/cron daily 2025-05-11 15:14:48 +02:00
Hartmut Bauer 8eccb0ed59 sort tar archive 2025-05-11 14:56:45 +02:00
Hartmut Bauer 6efd48d3c6 fix log overwrite 2025-05-11 13:48:47 +02:00
Hartmut Bauer 16c8f1afce fix rc handling 2025-05-11 13:48:06 +02:00
Hartmut Bauer 21be8f3864 fix mail.sh, log results of auto update 2025-05-10 14:42:05 +02:00
6 changed files with 45 additions and 12 deletions

No files matched your search

+1 -1
View File
@@ -3,4 +3,4 @@
HERE=$(dirname "$0")
# local start
sudo sh -c "nohup $HERE/main.sh -d </dev/null &"
sudo sh -c "nohup $HERE/main.sh --dx </dev/null &"
+2 -2
View File
@@ -27,7 +27,7 @@ after_backup() {
let rc=rc+$?
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
let rc=rc+$?
check_services
let rc=rc+$?
#check_services
#let rc=rc+$?
return $rc
}
+5 -2
View File
@@ -13,7 +13,10 @@
#
PODMAN=/usr/bin/podman
SUDO="sudo -u container sh -c"
#
# -i ist entscheident, damit die restliche Kommandozeile sauber ausgewertet wird
# das ersetzt den expliziten Aufruf mit "sh -c "..." "
SUDO="sudo -u container -i"
MAILCONTAINER=smtp-relay
MAILSERVER_IP=10.4.2.30
REMOTE=""
@@ -48,7 +51,7 @@ CONTENT=$(cat ${1:--})
MAILCMD="$SUDO $PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t"
if [ ! -z "$REMOTE" ]; then
MAILCMD="ssh $MAILSERVER_IP \"$MAILCMD\""
MAILCMD="ssh $MAILSERVER_IP $MAILCMD"
fi
# construct mail header + content and pipe to sendmail
cat <<EOMB | $MAILCMD
+25 -6
View File
@@ -26,7 +26,9 @@ LIST_EXT=list
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"
PODMAN=" sudo -u container -i podman"
CONTAINER_EXEC_USER=" $PODMAN exec"
CONTAINER_SVC_UPDATE_USER=" $PODMAN auto-update"
CONTAINER_EXEC="podman exec"
LOG_RECIPIENT=hb242@pm.me
@@ -195,8 +197,21 @@ do_start_stop_containers() {
return $rc
}
update_services() {
log $DEBUG "$DBG update_services()"
mail_log $INFO "$INF update services"
local upd=$($CONTAINER_SVC_UPDATE_USER 2>&1 | tee -a $LOG_FILE | egrep 'registry\s+true' | sed 's/^.* \([^[:space:]]*\/[^[:space:]]*\).*$/\1/g')
check_pipe_rc ${PIPESTATUS[@]}
local rc=$?
for i in $upd; do
mail_log $INFO "$INF $i"
done
return $rc
}
check_services() {
log $DEBUG "$DBG check_services()"
mail_log $INFO "$INF check services"
$HERE/check.sh >>$LOG_FILE 2>&1
return $?
}
@@ -420,8 +435,8 @@ backup_dir() {
local root=$1
local archive=$2
local dir=$3
log $DEBUG "$DBG > tar -c -z --numeric-owner --one-file-system --exclude \"@eaDir\" -C \"$root\" \"$dir\" | gpg --batch -c --passphrase xxxx -o \"$archive\""
tar -c -z --numeric-owner --one-file-system --exclude "@eaDir" -C "$root" "$dir" 2>>$LOG_FILE | gpg --batch -c --passphrase $PASSPHRASE -o "$archive" 2>>$LOG_FILE
log $DEBUG "$DBG > tar -c -z --numeric-owner --one-file-system --sort=name --exclude \"@eaDir\" -C \"$root\" \"$dir\" | gpg --batch -c --passphrase xxxx -o \"$archive\""
tar -c -z --numeric-owner --one-file-system --sort=name --exclude "@eaDir" -C "$root" "$dir" 2>>$LOG_FILE | gpg --batch -c --passphrase $PASSPHRASE -o "$archive" 2>>$LOG_FILE
check_pipe_rc ${PIPESTATUS[@]}
return $?
}
@@ -480,11 +495,11 @@ set_log_info() {
mail_log $INFO ">>> "
}
backup_daily() {
cron_backup_daily() {
# "master"-Server startet Backup auf NAS
if [ -d $BACKUP_MASTER_CHECK ]; then
log $DEBUG "$DBG starting daily backup on $NAS_HOSTNAME"
run_script_remote $NAS_IP "$NAS_SCRIPT -d"
run_script_remote $NAS_IP "$NAS_SCRIPT --dx"
# alte Logs löschen (nur auf einem Server ausführen)
prune_logs
@@ -497,6 +512,10 @@ backup_daily() {
nohup $THIS_SCRIPT -w >>$LOG_FILE 2>&1 </dev/null &
fi
backup_daily
}
backup_daily() {
mail_log $INFO ">>>>>>>>>> daily auto backup $VER for $HOST_NAME <<<<<<<<<<"
do_auto_backup backup_daily
@@ -627,7 +646,7 @@ list_archives() {
local target=$1
local targ=${NAS_ROOT//\//\\\/} # slashes escapen
log $DEBUG "$DBG > find \"$NAS_ROOT\" -type f -name \"*.$EXT\" | sed -E \"s/^$targ//\""
find "$NAS_ROOT" -type f -name "*.$EXT" 2>>$LOG_FILE | sed -E "s/^$targ//" 2>>$LOG_FILE
find "$NAS_ROOT" -type f -name "*.$EXT" 2>>$LOG_FILE | sed -E "s/^$targ//" 2>>$LOG_FILE | sort
check_pipe_rc ${PIPESTATUS[@]}
return $?
}
+10 -1
View File
@@ -3,6 +3,9 @@
# entrypoint for all actions
#
# 2.1.17 11.05.2025 - bugfixes, sort tar archive, split daily/cron daily
# 2.1.16 10.05.2025 - fix mail.sh, log results of auto-update
# 2.1.15 09.05.2025 - podman auto-update
# 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
@@ -13,7 +16,7 @@
# 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.13"
VER="2.1.17"
HERE=$(dirname "$0")
THIS_SCRIPT=$0
@@ -67,6 +70,12 @@ while :; do
show_help # Display a usage synopsis.
exit 0
;;
--dx)
MAIL_LOG_FILE="${log_file_name}.auto.log"
check_root
cron_backup_daily
break
;;
-d|--daily)
MAIL_LOG_FILE="${log_file_name}.auto.log"
check_root
+2
View File
@@ -45,6 +45,8 @@ after_backup() {
let rc=rc+$?
copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET"
let rc=rc+$?
update_services
let rc=rc+$?
check_services
let rc=rc+$?
return $rc