summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorJason D. McCormick <jason@mfamily.org>2023-12-20 16:47:37 -0500
committerJason D. McCormick <jason@mfamily.org>2023-12-20 16:47:37 -0500
commit62bca1b61296ac551574818c5021188913678168 (patch)
tree3224e3bdd527bb2f9253c097512ffd319f4caeed /bin
parent93f370195a4178aefce312027ad042559dd51a64 (diff)
updated mf-backup, add Makefiles
Diffstat (limited to 'bin')
-rw-r--r--bin/Makefile15
-rwxr-xr-xbin/mf-backup113
2 files changed, 114 insertions, 14 deletions
diff --git a/bin/Makefile b/bin/Makefile
new file mode 100644
index 0000000..1caaafc
--- /dev/null
+++ b/bin/Makefile
@@ -0,0 +1,15 @@
+prefix ?= /usr
+bindir ?= $(prefix)/bin
+
+BIN_FILES = $(filter-out Makefile , $(wildcard *))
+BIN_INSTALLABLES = $(patsubst %, $(DESTDIR)$(bindir)/%, $(BIN_FILES))
+
+INSTALLABLES = $(BIN_INSTALLABLES)
+
+.PHONY: install
+install: $(INSTALLABLES)
+
+$(DESTDIR)$(bindir)/%: %
+ install -D -m 0644 $< $@
+
+
diff --git a/bin/mf-backup b/bin/mf-backup
index 8ce05d4..46307a8 100755
--- a/bin/mf-backup
+++ b/bin/mf-backup
@@ -1,22 +1,107 @@
-#!/bin/bash
+#!/usr/bin/bash
PATH=/usr/bin:/bin:/usr/sbin:/sbin
+source /etc/mf-backup
-### Backup Next Cloud
+function check_for_error() {
+ [[ $1 -ne 0 ]] && GLOBAL_ERROR=$1
+}
-/usr/local/bin/occ maintenance:mode --on
-mysqldump -u root --all-databases > /var/lib/mysql-backup/dump.sql
-kopia snapshot create /var/lib/mysql-backup
-kopia snapshot create /data/nextcloud
-/usr/local/bin/occ maintenance:mode --off
+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 "$B2_KEY_ID" ]; then
+ echo "Missing B2_KEY_ID in /etc/mf-backup"
+ exit 1
+fi
+
+if [ -z "$B2_KEY" ]; then
+ echo "Missing B2_KEY in /etc/mf-backup"
+ exit 1
+fi
+
+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
-kopia snapshot create /etc
-kopia snapshot create /var/www
-kopia snapshot create /home
-kopia snapshot create /root
-kopia snapshot create /usr/local
+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
## Replicate
-source /etc/mf-backup.sh
-kopia repository sync-to b2 --bucket=mfamily-bu-cobalt --key-id=$B2_KEY_ID --key=$B2_KEY --delete
+log ""
+log "-------------------------------------------------------------"
+log " KOPIA S3 TO BACKBLAZE B2 REPLICATION"
+log "-------------------------------------------------------------"
+log ""
+kopia $KOPIA_OPTS repository sync-to b2 --bucket=${KOPIA_PREFIX}${X_HOSTNAME} \
+ --key-id=$B2_KEY_ID --key=$B2_KEY --delete >> $LOGFILE 2>&1
+ check_for_error $?
+
+## 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