Compare commits
6 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
3fefde417a | |
|
|
21e339a255 | |
|
|
bde62426ae | |
|
|
a746f94e41 | |
|
|
dc6857fcdd | |
|
|
4367f4b69b |
|
|
@ -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
|
||||
|
|
|
|||
49
backup.sh
49
backup.sh
|
|
@ -1,3 +1,50 @@
|
|||
#!/bin/bash
|
||||
|
||||
pushd /srv/backup && ./vvv.sh docker && ./vvv.sh mailus && nice ./v2b.sh -u backup && popd
|
||||
usage () {
|
||||
printf "Usage: backup.sh <options> <project> [<project>]\n"
|
||||
printf " project = Compose project folder(s).\n"
|
||||
printf " Option r <location>: 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
|
||||
|
||||
if [[ -n $RSYNC ]]; then
|
||||
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"
|
||||
fi
|
||||
|
||||
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)/"
|
||||
|
|
|
|||
44
vvv.sh
44
vvv.sh
|
|
@ -10,7 +10,7 @@ if [[ $(id -u) -ne "0" ]]; then
|
|||
fi
|
||||
|
||||
usage () {
|
||||
printf "Usage: vvv.sh <project>\n"
|
||||
printf "Usage: vvv.sh <options> <project>\n"
|
||||
printf " project = Compose project folder.\n"
|
||||
printf " Option r: restore operation\n"
|
||||
printf " Option d: keep containers down - don't bring back up\n"
|
||||
|
|
@ -18,21 +18,16 @@ usage () {
|
|||
|
||||
RESTORE="false"
|
||||
DOWN="false"
|
||||
OUTPUT=""
|
||||
OUTPUT=" Option: BACKUP OPERATION"
|
||||
while getopts ':rd' OPT; do
|
||||
case $OPT in
|
||||
r) RESTORE="true"; OUTPUT="${OUTPUT} Option: RESTORE OPERATION";;
|
||||
r) RESTORE="true"; OUTPUT=" Option: RESTORE OPERATION";;
|
||||
d) DOWN="true"; OUTPUT="${OUTPUT} Option: KEEP DOWN";;
|
||||
\?) usage; exit;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND -1))
|
||||
|
||||
if [[ $RESTORE == "true" ]] && [[ ! -f docker-restore.sh ]]; then
|
||||
echo "Problem: docker-restore.sh missing!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
scripts () {
|
||||
for MODE in backup restore; do
|
||||
FILE="docker-${MODE}.sh"
|
||||
|
|
@ -63,7 +58,7 @@ scripts () {
|
|||
done
|
||||
}
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
if [[ ! $# -eq 1 ]]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -80,16 +75,33 @@ if [[ -z "$VOLUMES" ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
printf "${OUTPUT}\n"
|
||||
if timeout --preserve-status --foreground 10 bash -c 'read -r -s -N 1 -p "Starting delay of 10 seconds. Press a key to cancel... "'; then
|
||||
printf "cancelled\n"
|
||||
exit 1
|
||||
else
|
||||
printf "starting\n"
|
||||
fi
|
||||
|
||||
USER=$(stat -c '%u' $BASH_SOURCE)
|
||||
|
||||
pushd "../${PROJECT}" > /dev/null || exit 1
|
||||
|
||||
if [[ $RESTORE == "true" ]] && [[ ! -f docker-restore.sh ]]; then
|
||||
echo "Problem: docker-restore.sh missing!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! $RESTORE == "true" ]]; then
|
||||
scripts
|
||||
fi
|
||||
|
||||
for COMP in docker-compose*.yml; do
|
||||
COMMAND="docker compose -f $COMP stop"
|
||||
if command -v docker-compose; then
|
||||
COMMAND="docker-compose -f $COMP stop"
|
||||
else
|
||||
COMMAND="docker compose -f $COMP stop"
|
||||
fi
|
||||
printf "${COMMAND}\n"
|
||||
if ! bash -c "${COMMAND}"; then
|
||||
printf "Services 'docker compose stop' error."
|
||||
|
|
@ -98,7 +110,11 @@ for COMP in docker-compose*.yml; do
|
|||
done
|
||||
|
||||
for COMP in docker-compose*.yml; do
|
||||
COMMAND="docker compose -f $COMP rm -f"
|
||||
if command -v docker-compose; then
|
||||
COMMAND="docker-compose -f $COMP rm -f"
|
||||
else
|
||||
COMMAND="docker compose -f $COMP rm -f"
|
||||
fi
|
||||
printf "${COMMAND}\n"
|
||||
if ! bash -c "${COMMAND}"; then
|
||||
printf "Services 'docker compose rm' error."
|
||||
|
|
@ -112,7 +128,11 @@ else
|
|||
bash "./docker-backup.sh"
|
||||
if [[ $DOWN = "false" ]]; then
|
||||
for COMP in docker-compose*.yml; do
|
||||
COMMAND="docker compose -f $COMP up -d"
|
||||
if command -v docker-compose; then
|
||||
COMMAND="docker-compose -f $COMP up -d"
|
||||
else
|
||||
COMMAND="docker compose -f $COMP up -d"
|
||||
fi
|
||||
printf "${COMMAND}\n"
|
||||
if ! bash -c "${COMMAND}"; then
|
||||
printf "Services 'up' error."
|
||||
|
|
|
|||
Loading…
Reference in New Issue