fix for do_backup()
This commit is contained in:
1 parent
22d9442b42
commit
050c3ccd9e
8 files changed
+38
-53
No files matched your search
@@ -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>/
|
||||
```
|
||||
@@ -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
@@ -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() {
|
||||
|
||||
+17
-11
@@ -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
|
||||
@@ -152,24 +152,30 @@ backup_dir() {
|
||||
# hostname-scripte setzen vars und definieren Funktionen backup_daily1, 2, usw. und backup_weekly1, 2, usw.
|
||||
# in den Funktionen werden die vars für den einzelnen backup gesetzt (target, excludes, usw.)
|
||||
# hier wird dann dass hostname-script gesourced (s.o.) und in einer Schleife werden die
|
||||
# entsprechenden backup_*-Funktionen aufgerufen
|
||||
# entsprechend en backup_*-Funktionen aufgerufen
|
||||
#
|
||||
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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
;;
|
||||
|
||||
@@ -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
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
Reference in new issue
Block a user