fix for do_backup()

This commit is contained in:
Hartmut Bauer committed 2025-03-23 01:37:19 +01:00
1 parent 22d9442b42
commit 050c3ccd9e
8 files changed
+37 -52

No files matched your search

+2 -4
View File
@@ -20,11 +20,9 @@ daily/nathan/backup.1 20GB/ 0:40h
hamiller/backup.1 35GB/ 0:35h
...
backup.7
synology/backup.1/data \
nfs / 60GB/ 1:40h
synology/backup.1 60GB/ 1:40h
...
backup.7/data
backup.7/nfs
backup.7
weekly/synology 320GB/ 9:30h
logs/<hostname>/
```
+4 -4
View File
@@ -9,10 +9,10 @@
#
# je Server:
#
# ssh nathan sudo /var/srv/nas/Server/bin/backup/cron.sh /var/srv/nas/backups/log/nathan-backup-full.log --daily
# ssh hamiller sudo /var/srv/nas/Server/bin/backup/cron.sh /var/srv/nas/backups/log/hamiller-backup-full.log --daily
# ssh synology sudo /volume1/nfs/Server/bin/backup/cron.sh /volume1/nfs/backups/log/synology-backup-full.log --daily
# ssh synology sudo /volume1/nfs/Server/bin/backup/cron.sh /volume1/nfs/backups/log/synology-backup-media-full.log --weekly
# ssh nathan sudo /var/srv/nas/Server/bin/backup/cron.sh /var/srv/nas/backups/log/nathan-daily-$(date '+%Y-%m-%d_%H%M').log --daily
# ssh hamiller sudo /var/srv/nas/Server/bin/backup/cron.sh /var/srv/nas/backups/log/hamiller-daily-$(date '+%Y-%m-%d_%H%M').log --daily
# ssh synology sudo /volume1/nfs/Server/bin/backup/cron.sh /volume1/nfs/backups/log/synology-daily-$(date '+%Y-%m-%d_%H%M').log --daily
# ssh synology sudo /volume1/nfs/Server/bin/backup/cron.sh /volume1/nfs/backups/log/synology-weekly-$(date '+%Y-%m-%d_%H%M').log --weekly
#
LOG="$1"
+2 -8
View File
@@ -2,17 +2,11 @@
NAS_ROOT=/var/srv/nas/backups
BACKUP_ROOT=/var/docker/tmp
BACKUP_TARGET=/var/docker/tmp
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
#
# ACHTUNG: BACKUP_TARGET wird für jeden Lauf _daily1, 2, usw. geköscht,
# es muss sich also für alle _daily?, bzw. _weekly? unterscheiden
#
backup_daily1() {
BACKUP_SOURCE="/var"
BACKUP_TARGET="$BACKUP_ROOT"
BACKUP_EXCLUDE_DIRS=()
}
@@ -21,7 +15,7 @@ copy_to_nas() {
# ins NAS-Verzeichnis verschieben
delete_dir "$NAS_TARGET"
check_dir "$NAS_TARGET"
sudo mv "$BACKUP_ROOT/*" "$NAS_TARGET"
sudo mv "$BACKUP_TARGET/*" "$NAS_TARGET"
}
before_backup() {
+16 -10
View File
@@ -91,7 +91,7 @@ check_directory() {
#
delete_dir() {
local dir=$1
sudo rm -rf "$dir" && return 0
sudo rm -rf $dir/* && return 0
log ERROR "### could not delete directory $1!"
# return error, so caller can decide what to do
return 1
@@ -157,19 +157,25 @@ backup_dir() {
do_auto_backup() {
local func=$1
local count=1
before_backup
while [ $(isFunction $func$count) ]; do
func$count
# vars defined in $func$count in $HOST_NAME.sh
delete_dir "$BACKUP_TARGET" # bei Fehler werden die Dateien hoffentlich überschrieben
check_directory "$BACKUP_TARGET"
backup_all_dirs "$BACKUP_SOURCE" "$BACKUP_TARGET" "${BACKUP_EXCLUDE_DIRS[@]}"
if ! $func§count 2>/dev/null ; then # Seiteneffekt: $func$count wird ausgeführt
echo "ERROR: keine Backup-Functions für $HOST_NAME."
exit 1
fi
before_backup
delete_dir "$BACKUP_TARGET"
check_directory "$BACKUP_TARGET"
# ab hier std logging (Datei ist in $BACKUP_TARGET)
do
backup_all_dirs "$BACKUP_SOURCE" "$BACKUP_TARGET" "${BACKUP_EXCLUDE_DIRS[@]}"
let "count += 1"
done
until ! $func$count 2>/dev/null # Seiteneffekt: $func$count wird ausgeführt (für nächste Schleife)
after_backup
}
# TODO LOG_FILE="$NAS_ROOT/log/$HOST_NAME-backup-media.log"
backup_daily() {
do_auto_backup backup_daily
}
+4
View File
@@ -42,6 +42,8 @@ else
exit 2
fi
LOG_FILE="$NAS_ROOT/log/$LOG_FILE-$(date '+%Y-%m-%d_%H%M').log"
file=
archive=
@@ -52,10 +54,12 @@ while :; do
exit 0
;;
-d|--daily)
LOG_FILE=$BACKUP_TARGET/backup.log
backup_daily
break
;;
-w|--weekly)
LOG_FILE=$BACKUP_TARGET/backup.log
backup_weekly
break
;;
+2 -16
View File
@@ -1,42 +1,28 @@
#!/usr/bin/env bash
NAS_ROOT=/var/srv/nas/backups
BACKUP_ROOT=/var/docker/tmp
BACKUP_TARGET=/var/docker/tmp
NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
#
# ACHTUNG: BACKUP_TARGET wird für jeden Lauf _daily1, 2, usw. geköscht,
# es muss sich also für alle _daily?, bzw. _weekly? unterscheiden
#
backup_daily1() {
BACKUP_SOURCE="/var"
BACKUP_TARGET="$BACKUP_ROOT/var"
BACKUP_EXCLUDE_DIRS=(docker)
}
backup_daily2() {
BACKUP_SOURCE="/var/docker"
BACKUP_TARGET="$BACKUP_ROOT/docker"
BACKUP_EXCLUDE_DIRS=(vol tmp)
}
backup_daily3() {
BACKUP_SOURCE="/var/docker/vol"
BACKUP_TARGET="$BACKUP_ROOT/vol"
BACKUP_EXCLUDE_DIRS=()
}
copy_to_nas() {
local dir
# einzelne backups iin einem Verzeichnis sammeln
for dir in $(iterate_dirs_in "$BACKUP_ROOT" "$@"); do
sudo mv "$BACKUP_ROOT/$dir/*" .. && rmdir "$BACKUP_ROOT/$dir"
done
# ins NAS-Verzeichnis verschieben
delete_dir "$NAS_TARGET"
check_dir "$NAS_TARGET"
sudo mv "$BACKUP_ROOT/*" "$NAS_TARGET"
sudo mv "$BACKUP_TARGET/*" "$NAS_TARGET"
}
before_backup() {
+2 -7
View File
@@ -2,19 +2,14 @@
NAS_ROOT=/volume1/nfs/backups
#
# ACHTUNG: BACKUP_TARGET wird für jeden Lauf _daily1, 2, usw. geköscht,
# es muss sich also für alle _daily?, bzw. _weekly? unterscheiden
#
backup_daily1() {
BACKUP_SOURCE="/volume1/data"
BACKUP_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY/data"
BACKUP_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
BACKUP_EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found")
}
backup_daily2() {
BACKUP_SOURCE="/volume1/nfs"
BACKUP_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY/nfs"
BACKUP_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
BACKUP_EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found" backups)
}
+5 -3
View File
@@ -29,11 +29,13 @@ list2() {
EXCL=("@eaDir" "Temporary Items" "lost+found")
ONE="eins2"
TWO="zwei2"
return 0
#for i in "${a[@]}"; do echo "$i"; done
}
EXC=()
iterate_dirs_in "." ${EXC[@]}
func=list3
if ! $func 2>/dev/null ; then echo "success"; else echo "error"; fi
echo "$EXCL"
exit