Skip to content
Snippets Groups Projects
Commit 7a0cd860 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

add backup script

parent 9f6bd20b
Branches
No related tags found
1 merge request!26Eliminate scheduler
backup.sh 0 → 100755
#!/bin/bash
# ================================================================================
#
# START BACKUP
#
# schedule backups.
# If backup time is reached then
# - the local dumps for all database types will be performed
# - transfer of data directories will be started
#
# This script is added as cron (see /etc/cron.d/)
#
# SYNTAX
# backup.sh [option]
#
# OPTIONS
# default: no parameter: start an incremental backup
# -f, --full force a full backup
# -d, --dryrun check date only; no run of a backup
#
# --------------------------------------------------------------------------------
# ah - Axel Hahn <axel.hahn@iml.unibe.ch>
#
# 2022-01-14 ah v1.0
# ================================================================================
. "$(dirname $0)"/jobhelper.sh
typeset -i rcBackup=0
typeset -i rcTransfer=0
bStart=1
# --------------------------------------------------------------------------------
# functions
# --------------------------------------------------------------------------------
function showHelp(){
self=$(basename "$0")
cat << EOFhelp
START A BACKUP
This script starts
- the database backups and creates dumps locally
- the file backup (using restic or dupliciity)
SYNTAX:
$self [OPTIONS]
default: no parameter:
OPTIONS:
-d, --dryrun just show infos, do not start a backup
-h, --help Show this help
The following parameters force the backup type (if using duplicity):
-a, --auto force auto (repeat full backup if last full backup is older than ...)
This parameter requires a value like "1M" for 1 month
-f, --full force full backup (if supported)
-i, --inc force incrmenental backup
EOFhelp
}
# --------------------------------------------------------------------------------
# checks
# --------------------------------------------------------------------------------
# --- read schedulerdata
j_read
while [ "$#" -gt 0 ];
do
case "$1" in
-h|-\?|--help)
echo "Param: show help"
showHelp
exit 0
;;
-d|--dryrun)
echo "Param: setting to DRY RUN"
bStart=0
;;
-a|--auto)
echo "Param: setting to AUTO $2"
echo "$2" | grep "^[1-9][0-9]*[a-zA-Z]$" 2>/dev/null
if [ $? -ne 0 ]; then
echo "ERROR: the value after $1 must be a number and a letter (for unit); i.e. 1M for 1 month"
exit 1
else
JOB_DOTODAY=1
JOBDEF_TYPE=auto
JOBDEF_AUTO=$2
bStart=1
shift 1
fi
;;
-f|--full)
echo "Param: setting to FULL"
JOB_DOTODAY=1
JOBDEF_TYPE=full
JOBDEF_AUTO=
bStart=1
;;
-i|--inc)
echo "Param: setting to INC"
JOB_DOTODAY=1
JOBDEF_TYPE=inc
JOBDEF_AUTO=
bStart=1
;;
*)
echo "ERROR: parameter [$1] is unknown"
showHelp
exit 1
esac
shift 1
done
JOBDEF_STARTTIME=$(date +%H%M)
STORAGE_BIN=$( _j_getvar "${STORAGEFILE}" "bin" )
cat << EOFbackupinfo
DEPRECATED: execution times: $JOBDEF_INC at `_j_getvar ${JOBFILE} "start-time-inc"`
DEPRECATED: Full backup : $JOBDEF_FULL at `_j_getvar ${JOBFILE} "start-time-full"`
DEPRECATED: do today = $JOB_DOTODAY
Used Backup tool: $STORAGE_BIN
type = $JOBDEF_TYPE $JOBDEF_AUTO
starttime = $JOBDEF_STARTTIME
donefile = $JOB_DONEFILE
EOFbackupinfo
j_requireUser "root"
echo "DEBUG $0 ... ABORT"; exit 1
# --------------------------------------------------------------------------------
if [ $bStart -eq 1 ]; then
# ----- local dumps
echo "INFO: `date` - starting backup ... type $JOBDEF_TYPE - time $JOBDEF_STARTTIME " | tee -a $JOB_LOGFILE
touch "${JOB_DONEFILE}.01.START"
cat $JOBFILE >>$JOB_LOGFILE
echo "INFO: `date` - Making local backups ... ${DIR_SELF}/localdump.sh ALL" | tee -a $JOB_LOGFILE
${DIR_SELF}/localdump.sh ALL | tee -a $JOB_LOGFILE
rcBackup=$?
echo "INFO: `date` - local backups were finished" | tee -a $JOB_LOGFILE
sleep 2
# ----- transfer
if [ -x "${DIR_SELF}/transfer.sh" ]; then
# transfer files
echo "INFO: `date` - Sending data to storage... ${DIR_SELF}/transfer.sh $JOBDEF_TYPE" | tee -a $JOB_LOGFILE
touch "${JOB_DONEFILE}.02.STARTTRANSFER"
${DIR_SELF}/transfer.sh $JOBDEF_TYPE $JOBDEF_AUTO 2>&1 | tee -a $JOB_LOGFILE
rcTransfer=$?
else
echo "SKIP - transfer.sh not found; all files will be kept on local filesystem only" | tee -a $JOB_LOGFILE
fi
rcBackup=$rcBackup+rcTransfer
echo "INFO: `date` - DONE" | tee -a $JOB_LOGFILE
touch "${JOB_DONEFILE}.03.DONE"
echo
echo log for this executed job is
ls -l $JOB_LOGFILE
echo
echo "INFO: `date` - cleanup logs"
echo find "${DIR_LOGS}" -mtime +28 -delete -print
find "${DIR_LOGS}" -mtime +28 -delete -print
echo
echo STATUS $0 exit with final returncode rc=$rcBackup | tee -a $JOB_LOGFILE
echo
else
echo "Nothing to do."
fi
# --------------------------------------------------------------------------------
exit $rcBackup
# --------------------------------------------------------------------------------
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment