From 2594d09fb175bcdc916c87731bf98144be99159c Mon Sep 17 00:00:00 2001 From: "Jason D. McCormick" Date: Fri, 4 Nov 2022 22:27:10 -0400 Subject: initial --- Makefile | 42 +++++++++++++++++++++++++++++++++++++ backup-dirs | 4 ++++ backup2nextcloud | 28 +++++++++++++++++++++++++ backup2nextcloud-2.0_1.deb | Bin 0 -> 1236 bytes backup2nextcloud-hamvoip | 50 +++++++++++++++++++++++++++++++++++++++++++++ backup2nextcloud-pistar | 48 +++++++++++++++++++++++++++++++++++++++++++ backup2nextcloud.cron | 9 ++++++++ control | 9 ++++++++ 8 files changed, 190 insertions(+) create mode 100644 Makefile create mode 100644 backup-dirs create mode 100755 backup2nextcloud create mode 100644 backup2nextcloud-2.0_1.deb create mode 100755 backup2nextcloud-hamvoip create mode 100755 backup2nextcloud-pistar create mode 100755 backup2nextcloud.cron create mode 100644 control diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5534256 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +INSTALLS = \ + $(DESTDIR)/usr/local/sbin/backup2nextcloud \ + $(DESTDIR)/etc/backup-dirs \ + $(DESTDIR)/etc/cron.daily/backup2nextcloud \ + +PKGN = backup2nextcloud +MAJVER = 2.0 +MINVER = 1 +PKGD = $(PKGN)-$(MAJVER)_$(MINVER) + +install: $(DESTDIR)/usr/local/sbin/backup2nextcloud $(DESTDIR)/etc/backup-dirs $(DESTDIR)/etc/cron.daily/backup2nextcloud + +$(DESTDIR)/usr/local/sbin/backup2nextcloud: backup2nextcloud + test ! -d $(DESTDIR)/usr/local/sbin && mkdir -p $(DESTDIR)/usr/local/sbin + install -m 0755 $< $@ + +$(DESTDIR)/etc/backup-dirs: backup-dirs + test ! -d $(DESTDIR)/etc && mkdir -p $(DESTDIR)/etc + install -m 0644 $< $@ + +$(DESTDIR)/etc/cron.daily/backup2nextcloud: backup2nextcloud.cron + test ! -d $(DESTDIR)/etc/cron.daily && mkdir -p $(DESTDIR)/etc/cron.daily + install -m 0755 $< $@ + +.PHONY: deb + +deb: clean + mkdir -p tmp/$(PKGD)/DEBIAN + install -m 0644 control tmp/$(PKGD)/DEBIAN/control + make install DESTDIR=./tmp/$(PKGD) + ( cd tmp && dpkg-deb --build $(PKGD) ) + cp tmp/$(PKGD).deb . + + +.PHONY: clean + +clean: + rm -rf tmp/* + + + + diff --git a/backup-dirs b/backup-dirs new file mode 100644 index 0000000..7743152 --- /dev/null +++ b/backup-dirs @@ -0,0 +1,4 @@ +/etc +/var/www +/home +/root diff --git a/backup2nextcloud b/backup2nextcloud new file mode 100755 index 0000000..cb61d2e --- /dev/null +++ b/backup2nextcloud @@ -0,0 +1,28 @@ +#!/bin/bash + +PATH=/usr/bin:/bin:/usr/sbin:/sbin + +F=`mktemp` +FT="/tmp/`hostname`.tar.bz2" + +if [ -f $FT ]; then + echo "File $FT exists - incomplete run?" + exit 1 +fi + +mv $F $FT + +tar -jcf $FT `cat /etc/backup-dirs | tr '\n' ' '` 2> /dev/null + +rclone copy $FT nextcloud:/ +RVAL=$? + +if [ $? == 0 ]; then + rm $FT + exit 0 +else + exit 1 +fi + + + diff --git a/backup2nextcloud-2.0_1.deb b/backup2nextcloud-2.0_1.deb new file mode 100644 index 0000000..d27cdfc Binary files /dev/null and b/backup2nextcloud-2.0_1.deb differ diff --git a/backup2nextcloud-hamvoip b/backup2nextcloud-hamvoip new file mode 100755 index 0000000..2128f22 --- /dev/null +++ b/backup2nextcloud-hamvoip @@ -0,0 +1,50 @@ +#!/bin/bash + +PATH=/usr/bin:/bin:/usr/sbin:/sbin + +FRVAL=0 + + + +for h in `cat /etc/backup-hamvoip | tr '\n' ' ' 2> /dev/null` +do + hn=`echo $h | perl -pe 's/^([^\.]+)\..*$/$1/g'` + + FT="/tmp/$hn.tar" + + if [ -f $FT ] || [ -f $FT.bz2 ]; then + echo "File $FT exists - incomplete run?" + exit 1 + fi + + F=`mktemp` + + mv $F $FT + + ssh -p 222 -o "PasswordAuthentication no" -o 'StrictHostKeyChecking no' \ + root@$h 'cd / && tar cf - etc/ root/ var/lib/asterisk/sounds/rpt/ srv/http/' > $FT + RVAL=$? + + if [ $RVAL != 0 ]; then + echo "Error pulling down from $h" + rm $FT + FRVAL=1 + else + + bzip2 $FT + rclone --bind=44.70.48.34 copy $FT.bz2 nextcloud:/Backups/$hn/ + RVAL=$? + + if [ $RVAL != 0 ]; then + echo "Error rsyncing $FT.bz2 to nextcloud" + FRVAL=1 + fi + + rm $FT.bz2 + fi + +done + +exit $FRVAL + + diff --git a/backup2nextcloud-pistar b/backup2nextcloud-pistar new file mode 100755 index 0000000..abac569 --- /dev/null +++ b/backup2nextcloud-pistar @@ -0,0 +1,48 @@ +#!/bin/bash + +PATH=/usr/bin:/bin:/usr/sbin:/sbin + +FRVAL=0 + +AUTH='pi-star:wtfwtfwtf!' + +for h in `cat /etc/backup-pistar | tr '\n' ' ' 2> /dev/null` +do + hn=`echo $h | perl -pe 's/^([^\.]+)\..*$/$1/g'` + + FT="/tmp/$hn.zip" + + if [ -f $FT ]; then + echo "File $FT exists - incomplete run?" + exit 1 + fi + + F=`mktemp` + + mv $F $FT + + curl -s -d "action=download" -X POST --user $AUTH --output $FT http://$h/admin/config_backup.php + RVAL=$? + + if [ $RVAL != 0 ]; then + echo "Error pulling down from $h" + rm $FT + FRVAL=1 + else + + rclone --bind=44.70.48.34 copy $FT nextcloud:/Backups/$hn/ + RVAL=$? + + if [ $RVAL != 0 ]; then + echo "Error rsyncing $FT to nextcloud" + FRVAL=1 + fi + + rm $FT + fi + +done + +exit $FRVAL + + diff --git a/backup2nextcloud.cron b/backup2nextcloud.cron new file mode 100755 index 0000000..083007a --- /dev/null +++ b/backup2nextcloud.cron @@ -0,0 +1,9 @@ +#!/bin/bash + +if [ -f /var/lib/mysql/ib_logfile0 ] && [ -d /var/lib/mysql-backup ]; then + /usr/bin/mysqldump -u root --all-databases > /var/lib/mysql-backup +fi + +sleep $(( $RANDOM % 15 + 1 ))m +/usr/local/sbin/backup2nextcloud + diff --git a/control b/control new file mode 100644 index 0000000..b10f9ba --- /dev/null +++ b/control @@ -0,0 +1,9 @@ +Package: backup2nextcloud +Version: 2.0-1 +Section: base +Priority: optional +Architecture: all +Maintainer: Jason McCormick +Depends: rclone, tar, bzip2 +Description: Backup a system to Nextcloud using rclone + -- cgit v1.2.3