From bde62426ae1bb1c1000c0c0a3c63425ec27e66c9 Mon Sep 17 00:00:00 2001 From: Andrew Hurley Date: Mon, 26 Dec 2022 14:20:25 +1100 Subject: [PATCH] change backup.sh to be more general --- backup.cron | 2 +- backup.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/backup.cron b/backup.cron index 15b2fea..a47dd56 100644 --- a/backup.cron +++ b/backup.cron @@ -1 +1 @@ -14 4 * * * root /srv/backup/backup.sh 2>&1 |tee /root/cron-backup.log +14 4 * * * root /srv/backup/backup.sh -r "/srv/fsback" docker 2>&1 |tee /srv/fsback/$(date +%^a).log diff --git a/backup.sh b/backup.sh index f32819d..9e4e87b 100755 --- a/backup.sh +++ b/backup.sh @@ -1,9 +1,49 @@ #!/bin/bash -pushd /srv/backup && \ - printf "Backup start: $(date)\n" && \ - ./vvv.sh docker && \ - nice ./v2b.sh -u backup && \ - rsync -av --mkpath ./_vols_/ "/srv/fsback/docker/$(date +%^a)/" && \ - printf "Backup end: $(date)\n" && \ - popd +usage () { + printf "Usage: backup.sh []\n" + printf " project = Compose project folder(s).\n" + printf " Option r : rsync to another location - will make path (rsync mkpath option used)\n" +} + +pexit () { + printf "${1}\n" + exit 1 +} + +RSYNC="" +while getopts ':r:' OPT; do + case $OPT in + r) RSYNC="${OPTARG}";; + \?) usage; exit;; + esac +done +shift $((OPTIND -1)) + +if [[ $# -lt 1 ]]; then + pexit "Error: missing project(s)" +fi + +HN=$(hostname -f) +if [[ ! $HN =~ "." ]]; then + pexit "Error: fully quaififed hostname required (add to /etc/hosts - 127.0.0.11)" +fi + +printf "Hostname: ${HN}\n" + +pushd /srv/backup || pexit "Error: changing to backup directory" +printf "Backup start: $(date)\n" +for PROJECT in $@; do + ./vvv.sh "${PROJECT}" || pexit "Error: using vvv.sh ${PROJECT}" +done +nice ./v2b.sh -u backup || pexit "Error: using v2b.sh -u backup" +if [[ -n $RSYNC ]]; then + RSYNC="${RSYNC}/${HN}/$(date +%^a)" + rsync -av --mkpath ./_vols_/ "${RSYNC}/" || pexit "Error: using rsync -av --mkpath ./_vols_/ ${RSYNC}/" +fi +printf "Backup end: $(date)\n" && \ +popd || pexit "Error: using popd" + + + +# e.g. rsync -av --mkpath ./_vols_/ "/srv/fsback/${HN}/$(date +%^a)/"