97 lines
2.5 KiB
Bash
Executable File
97 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/eval bash
|
|
|
|
# TODO: cmd line handling
|
|
# fn für div. Aktionen (gemeinsame?)
|
|
|
|
NAS_ROOT=/volume1/nfs/backups
|
|
|
|
backup_media() {
|
|
TARGET_DIR="$NAS_ROOT/weekly/$HOST_NAME"
|
|
|
|
LOG_FILE="$NAS_ROOT/log/$HOST_NAME-backup-media.log"
|
|
|
|
log INFO "*** *** Begin NAS backup (media/books, media/music)"
|
|
|
|
EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found" serien tmp video "video.archive")
|
|
check_directory $TARGET_DIR
|
|
# media/books media/music
|
|
backup_all_dirs "/volume1/media" "$TARGET_DIR" "${EXCLUDE_DIRS[@]}"
|
|
|
|
log INFO "*** End of NAS backup"
|
|
list_archives $TARGET_DIR
|
|
|
|
}
|
|
|
|
backup_data() {
|
|
|
|
TARGET_DIR="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY"
|
|
|
|
LOG_FILE="$NAS_ROOT/log/$HOST_NAME-backup.log"
|
|
|
|
log INFO "*** *** Begin NAS backup (data, nfs)"
|
|
EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found")
|
|
delete_dir $TARGET_DIR # bei Fehler werden die Dateien hoffentlich überschrieben
|
|
check_directory $TARGET_DIR
|
|
# data
|
|
backup_all_dirs "/volume1/data" "$TARGET_DIR" "${EXCLUDE_DIRS[@]}"
|
|
|
|
EXCLUDE_DIRS=("@eaDir" "Temporary Items" "lost+found" backups)
|
|
# nfs
|
|
backup_all_dirs "/volume1/nfs" "$TARGET_DIR" "${EXCLUDE_DIRS[@]}"
|
|
|
|
log INFO "*** End of NAS backup"
|
|
list_archives $TARGET_DIR
|
|
}
|
|
|
|
# TODO: restore fn
|
|
|
|
|
|
##
|
|
# auto backup handling
|
|
#
|
|
# 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 backuü gesetzt (target, excludes, usw.)
|
|
# im main-script wird dann dass hostname-script gesourced und in einer Schleife werden die
|
|
# entsprechenden backup_*-Funktionen aufgerufen
|
|
#
|
|
# count=1
|
|
# while [ $(isFunction backup_daily$count) ]; do
|
|
# backup_daily$count # setzt die nötigen vars für den backup
|
|
# do_backup "daily"
|
|
# let "count += 1"
|
|
# done
|
|
#
|
|
|
|
while :; do
|
|
case $1 in
|
|
--daily)
|
|
backup_data
|
|
break
|
|
;;
|
|
--weekly)
|
|
backup_media
|
|
break
|
|
;;
|
|
-l|--list)
|
|
list_archives "$NAS_ROOT"
|
|
break;
|
|
;;
|
|
-c|--content)
|
|
if [ "$2" ]; then
|
|
list_archive_content "$NAS_ROOT" "$2"
|
|
else
|
|
echo 'ERROR: "--content" requires a non-empty option argument.'
|
|
fi
|
|
break
|
|
;;
|
|
--restore)
|
|
# TODO
|
|
break
|
|
;;
|
|
*) # Default case: No more options, so break out of the loop.
|
|
break
|
|
esac
|
|
|
|
shift
|
|
done
|