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
|
hamiller/backup.1 35GB/ 0:35h
|
||||||
...
|
...
|
||||||
backup.7
|
backup.7
|
||||||
synology/backup.1/data \
|
synology/backup.1 60GB/ 1:40h
|
||||||
nfs / 60GB/ 1:40h
|
|
||||||
...
|
...
|
||||||
backup.7/data
|
backup.7
|
||||||
backup.7/nfs
|
|
||||||
weekly/synology 320GB/ 9:30h
|
weekly/synology 320GB/ 9:30h
|
||||||
logs/<hostname>/
|
logs/<hostname>/
|
||||||
```
|
```
|
||||||
@@ -9,10 +9,10 @@
|
|||||||
#
|
#
|
||||||
# je Server:
|
# je Server:
|
||||||
#
|
#
|
||||||
# ssh nathan sudo /var/srv/nas/Server/bin/backup/cron.sh /var/srv/nas/backups/log/nathan-backup-full.log --daily
|
# 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-backup-full.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-backup-full.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-backup-media-full.log --weekly
|
# 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"
|
LOG="$1"
|
||||||
|
|||||||
+2
-8
@@ -2,17 +2,11 @@
|
|||||||
|
|
||||||
|
|
||||||
NAS_ROOT=/var/srv/nas/backups
|
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"
|
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_daily1() {
|
||||||
BACKUP_SOURCE="/var"
|
BACKUP_SOURCE="/var"
|
||||||
BACKUP_TARGET="$BACKUP_ROOT"
|
|
||||||
BACKUP_EXCLUDE_DIRS=()
|
BACKUP_EXCLUDE_DIRS=()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +15,7 @@ copy_to_nas() {
|
|||||||
# ins NAS-Verzeichnis verschieben
|
# ins NAS-Verzeichnis verschieben
|
||||||
delete_dir "$NAS_TARGET"
|
delete_dir "$NAS_TARGET"
|
||||||
check_dir "$NAS_TARGET"
|
check_dir "$NAS_TARGET"
|
||||||
sudo mv "$BACKUP_ROOT/*" "$NAS_TARGET"
|
sudo mv "$BACKUP_TARGET/*" "$NAS_TARGET"
|
||||||
}
|
}
|
||||||
|
|
||||||
before_backup() {
|
before_backup() {
|
||||||
|
|||||||
+17
-11
@@ -91,7 +91,7 @@ check_directory() {
|
|||||||
#
|
#
|
||||||
delete_dir() {
|
delete_dir() {
|
||||||
local dir=$1
|
local dir=$1
|
||||||
sudo rm -rf "$dir" && return 0
|
sudo rm -rf $dir/* && return 0
|
||||||
log ERROR "### could not delete directory $1!"
|
log ERROR "### could not delete directory $1!"
|
||||||
# return error, so caller can decide what to do
|
# return error, so caller can decide what to do
|
||||||
return 1
|
return 1
|
||||||
@@ -152,24 +152,30 @@ backup_dir() {
|
|||||||
# hostname-scripte setzen vars und definieren Funktionen backup_daily1, 2, usw. und backup_weekly1, 2, usw.
|
# 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.)
|
# 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
|
# 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() {
|
do_auto_backup() {
|
||||||
local func=$1
|
local func=$1
|
||||||
local count=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"
|
let "count += 1"
|
||||||
done
|
until ! $func$count 2>/dev/null # Seiteneffekt: $func$count wird ausgeführt (für nächste Schleife)
|
||||||
|
|
||||||
after_backup
|
after_backup
|
||||||
}
|
}
|
||||||
# TODO LOG_FILE="$NAS_ROOT/log/$HOST_NAME-backup-media.log"
|
|
||||||
backup_daily() {
|
backup_daily() {
|
||||||
do_auto_backup backup_daily
|
do_auto_backup backup_daily
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ else
|
|||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
LOG_FILE="$NAS_ROOT/log/$LOG_FILE-$(date '+%Y-%m-%d_%H%M').log"
|
||||||
|
|
||||||
file=
|
file=
|
||||||
archive=
|
archive=
|
||||||
|
|
||||||
@@ -52,10 +54,12 @@ while :; do
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
-d|--daily)
|
-d|--daily)
|
||||||
|
LOG_FILE=$BACKUP_TARGET/backup.log
|
||||||
backup_daily
|
backup_daily
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
-w|--weekly)
|
-w|--weekly)
|
||||||
|
LOG_FILE=$BACKUP_TARGET/backup.log
|
||||||
backup_weekly
|
backup_weekly
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -1,42 +1,28 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
NAS_ROOT=/var/srv/nas/backups
|
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"
|
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_daily1() {
|
||||||
BACKUP_SOURCE="/var"
|
BACKUP_SOURCE="/var"
|
||||||
BACKUP_TARGET="$BACKUP_ROOT/var"
|
|
||||||
BACKUP_EXCLUDE_DIRS=(docker)
|
BACKUP_EXCLUDE_DIRS=(docker)
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_daily2() {
|
backup_daily2() {
|
||||||
BACKUP_SOURCE="/var/docker"
|
BACKUP_SOURCE="/var/docker"
|
||||||
BACKUP_TARGET="$BACKUP_ROOT/docker"
|
|
||||||
BACKUP_EXCLUDE_DIRS=(vol tmp)
|
BACKUP_EXCLUDE_DIRS=(vol tmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_daily3() {
|
backup_daily3() {
|
||||||
BACKUP_SOURCE="/var/docker/vol"
|
BACKUP_SOURCE="/var/docker/vol"
|
||||||
BACKUP_TARGET="$BACKUP_ROOT/vol"
|
|
||||||
BACKUP_EXCLUDE_DIRS=()
|
BACKUP_EXCLUDE_DIRS=()
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_to_nas() {
|
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"
|
delete_dir "$NAS_TARGET"
|
||||||
check_dir "$NAS_TARGET"
|
check_dir "$NAS_TARGET"
|
||||||
sudo mv "$BACKUP_ROOT/*" "$NAS_TARGET"
|
sudo mv "$BACKUP_TARGET/*" "$NAS_TARGET"
|
||||||
}
|
}
|
||||||
|
|
||||||
before_backup() {
|
before_backup() {
|
||||||
|
|||||||
+2
-7
@@ -2,19 +2,14 @@
|
|||||||
|
|
||||||
NAS_ROOT=/volume1/nfs/backups
|
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_daily1() {
|
||||||
BACKUP_SOURCE="/volume1/data"
|
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_EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found")
|
||||||
}
|
}
|
||||||
backup_daily2() {
|
backup_daily2() {
|
||||||
BACKUP_SOURCE="/volume1/nfs"
|
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)
|
BACKUP_EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found" backups)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,11 +29,13 @@ list2() {
|
|||||||
EXCL=("@eaDir" "Temporary Items" "lost+found")
|
EXCL=("@eaDir" "Temporary Items" "lost+found")
|
||||||
ONE="eins2"
|
ONE="eins2"
|
||||||
TWO="zwei2"
|
TWO="zwei2"
|
||||||
|
return 0
|
||||||
#for i in "${a[@]}"; do echo "$i"; done
|
#for i in "${a[@]}"; do echo "$i"; done
|
||||||
}
|
}
|
||||||
|
|
||||||
EXC=()
|
func=list3
|
||||||
iterate_dirs_in "." ${EXC[@]}
|
|
||||||
|
if ! $func 2>/dev/null ; then echo "success"; else echo "error"; fi
|
||||||
|
echo "$EXCL"
|
||||||
|
|
||||||
exit
|
exit
|
||||||
Reference in new issue
Block a user