Skip to content

Instantly share code, notes, and snippets.

@splacento-incomm
Last active March 10, 2022 12:18
Show Gist options
  • Save splacento-incomm/ba374376b6ca9477cf1f4676fe4acb90 to your computer and use it in GitHub Desktop.
Save splacento-incomm/ba374376b6ca9477cf1f4676fe4acb90 to your computer and use it in GitHub Desktop.
Borg backup of OwnCloud to local disk via Gitlab's pipleline
#!/bin/bash
# By Sebastijan Placento 9a3bsp@gmail.com
# simple backup routine for Owncloud for easier backup (needed for colleges).
# Insert drive with uuid 57313b9d-2aef-4ddc-879f-a8b4b256c922
MOUNTPOINT=/mnt/ext
MOUNTDRIVE=/dev/sdc
UUID=57313b9d-2aef-4ddc-879f-a8b4b256c922
IS_DRIVE_AVAILABLE=$(lsblk -f | grep -wq "$UUID" && echo true || echo false)
OWNCLOUD_DB_PASS=$(sudo -u www-data php /var/www/owncloud/occ config:system:get dbpassword) #GET DB password
DATE=$(date --iso-8601)-$(hostname)
TARGET=$MOUNTPOINT/BorgBackup/backups
OWNCLOUDPATH=/var/www/owncloud
if ($IS_DRIVE_AVAILABLE)
then
echo "Target drive found $MOUNTDRIVE. Will be mounted into MOUNTPOINT"
else
echo "Aborting - NO DRIVE found!!!"
echo "Please insert the drive first or check cables. HINT: blue light!"
exit 1
fi
echo "Mounting drive…"
mount $MOUNTDRIVE $MOUNTPOINT
sleep 5
echo "Dumping database…"
mysqldump -u owncloud2 owncloud2 -p"$OWNCLOUD_DB_PASS" > $OWNCLOUDPATH/data/sys/db.sql
echo "Packing Owncloud system…"
tar czf $OWNCLOUDPATH/data/sys/owncloud-sys.tgz $OWNCLOUDPATH --exclude=$OWNCLOUDPATH/data
echo "Starting creating BORG backup snapshot…"
borg create --stats --progress $TARGET::$DATE $OWNCLOUDPATH/data
echo "Umonting...."
umount $MOUNTPOINT
echo "Done!"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment