#!/usr/bin/bash PATH=/usr/bin:/bin:/usr/sbin:/sbin source /etc/mf-backup function check_for_error() { [[ $1 -ne 0 ]] && GLOBAL_ERROR=$1 } function backup_nextcloud() { local GLOBAL_ERROR=0 /usr/local/bin/occ maintenance:mode --on && \ mysqldump -u root --all-databases > /var/lib/mysql-backup/dump.sql && \ kopia $KOPIA_OPTS snapshot create /var/lib/mysql-backup && \ kopia $KOPIA_OPTS snapshot create /data/nextcloud && \ /usr/local/bin/occ maintenance:mode --off check_for_error $? return $GLOBAL_ERROR } function backup_mariadb() { local GLOBAL_ERROR=0 mysqldump -u root --all-databases > /var/lib/mysql-backup/dump.sql check_for_error $? echo "kopia snapshot create /var/lib/mysql-backup" kopia $KOPIA_OPTS snapshot create /var/lib/mysql-backup check_for_error $? return $GLOBAL_ERROR } function log() { echo "$1" >> $LOGFILE } # Check B2 keys if [ -z "$DIRS_TO_BACKUP" ]; then echo "Missing DIRS_TO_BACKUP in /etc/mf-backup" exit 1 fi LOGFILE=`mktemp` GLOBAL_ERROR=0 ## Backup NextCloud if [[ $BACKUP_NEXTCLOUD =~ ^[yY]$ ]]; then log "" log "-------------------------------------------------------------" log " KOPIA NEXTCLOUD BACKUP" log "-------------------------------------------------------------" log "" backup_nextclod >> $LOGFILE 2>&1 check_for_error fi ## Backup MariaDB if [[ $BACKUP_MARIADB =~ ^[yY]$ ]]; then log "" log "-------------------------------------------------------------" log " KOPIA MARIADB BACKUP" log "-------------------------------------------------------------" log "" backup_mariadb >> $LOGFILE 2>&1 check_for_error fi ## Backups log "" log "-------------------------------------------------------------" log " KOPIA STD FILESYSTEM SNAPSHOT " log " ${DIRS_TO_BACKUP}" log "-------------------------------------------------------------" log "" for DIR in $DIRS_TO_BACKUP do echo "kopia snapshot create $DIR" >> $LOGFILE kopia $KOPIA_OPTS snapshot create $DIR >> $LOGFILE 2>&1 check_for_error $? done ## Mail log on error if [[ $GLOBAL_ERROR -ne 0 ]]; then MSUBJ="${X_HOSTNAME} Backup Job Errors" mail -r $MAIL_FROM -s "$MSUBJ" $MAIL_TO < $LOGFILE fi rm $LOGFILE exit 0