diff --git a/nextcloud_backup b/nextcloud_backup new file mode 100755 index 0000000..6131fff --- /dev/null +++ b/nextcloud_backup @@ -0,0 +1,71 @@ +#!/bin/zsh +set -x + +ECHOCMD="" + +export BORG_REPO="/home/fran/backups/nextcloud/backuprepo" + +SQLBKP="nextcloud-sqlbkp.bak" +ARCHIVE_BASE_NAME="nextcloud-{now:%Y-%m-%d}" + +function borgcreate { + archive_name="${ARCHIVE_BASE_NAME}${1}" + target_dirs="${2} ${3}" + + ( + eval $(ssh-agent) > /dev/null + ssh-add -q ~/.ssh/borg-fserver_key + ssh-add -q ~/.ssh/borg-fdell_key + $ECHOCMD ssh -A -i ~/.ssh/borg-fdell_key fran@fserver \ + "borg create \ + --stats \ + --show-rc \ + --compression lz4 \ + fran@nas:${BORG_REPO}::${archive_name} \ + ${target_dirs}" + + kill "${SSH_AGENT_PID}" + ) +} + +borgcreate "-temp" "/var/www/nextcloud" + +$ECHOCMD ssh fserver "sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on" + +$ECHOCMD ssh fserver "PGPASSWORD=webosfritos sudo -E pg_dump nextcloud -h localhost -U nextcloud > $SQLBKP" +borgcreate "" "/var/www/nextcloud" ${SQLBKP} + +$ECHOCMD ssh fserver "sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off" + +$ECHOCMD borg delete --glob-archives "*-temp" + +$ECHOCMD borg prune \ + --list \ + --prefix "nextcloud-" \ + --show-rc \ + --keep-daily 7 \ + --keep-weekly 4 \ + --keep-monthly 6 + +$ECHOCMD borg info --show-rc ::${ARCHIVE_BASE_NAME} + +# tar -cz --acls --xattrs -f - $DIR | pv -s $(du -sb $DIR | awk '{print $1}') | gzip > "${DIR}_${DATE}.tar.gz" + +# Recover from backup: + +# mkdir nextcloud +# mkdir nextcloud/data +# # rsync everything in /var/www/nextcloud/ +# chown -R www-data:www-data nextcloud +# sudo chmod g+w /var/www/nextcloud/data + +# sudo -u postgres psql -d template1 +# template1=# drop database nextcloud; +# template1=# create database nextcloud owner nextcloud; +# sudo -u postgres psql -d nextcloud -f /home/fran/nextcloud-sqlbkp_20210402.bak + +# sudo crontab -u www-data -e +# # */5 * * * * php -f /var/www/nextcloud/cron.php + +# sudo -u www-data php /var/www/nextcloud/occ maintenance:data-fingerprint +# sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off