From fd4b075a26882baa72104839a277fe46c708d9e6 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sat, 14 Dec 2024 16:23:24 +0300 Subject: [PATCH] working on migration and backups... Signed-off-by: Alex A. Naanou --- .pct-helpers | 1 + nextcloud/backup.sh | 61 ++++++++++++++++++++++++++++++++ nextcloud/make.sh | 83 -------------------------------------------- nextcloud/migrate.sh | 49 ++++++++++++++++++++++++++ nextcloud/restore.sh | 40 +++++++++++++++++++++ 5 files changed, 151 insertions(+), 83 deletions(-) create mode 100755 nextcloud/backup.sh create mode 100755 nextcloud/migrate.sh create mode 100755 nextcloud/restore.sh diff --git a/.pct-helpers b/.pct-helpers index fc7200b..8a354cc 100644 --- a/.pct-helpers +++ b/.pct-helpers @@ -38,6 +38,7 @@ function @ (){ return $? } +# XXX should @@ and @ be the same -- use eval??? function @@ (){ if [ -z $DRY_RUN ] ; then ! [ $QUIET ] \ diff --git a/nextcloud/backup.sh b/nextcloud/backup.sh new file mode 100755 index 0000000..efae2e2 --- /dev/null +++ b/nextcloud/backup.sh @@ -0,0 +1,61 @@ +#!/usr/bin/bash +#---------------------------------------------------------------------- + +cd $(dirname $0) +PATH=$PATH:$(dirname "$(pwd)") + + +#---------------------------------------------------------------------- + +source ../.pct-helpers + + +#---------------------------------------------------------------------- + +readConfig + + +#---------------------------------------------------------------------- +# +# see: +# https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html + +# XXX confirm vars... +# XXX + +DATE=$(date +%Y%m%d%H%M) +DIR=${DATE}-${CTHOSTNAME}-${ID} + + + +#---------------------------------------------------------------------- + +mkdir "${DIR}" +cd "${DIR}" + +@ lxc-attach $ID -- turnkey-occ maintenance:mode --on + +# sql... +# XXX db: +# mysqldump --single-transaction \ +# -h [server] -u [username] -p[password] \ +# [db_name] \ +# > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak +# or: +# mysqldump --single-transaction --default-character-set=utf8mb4 \ +# -h [server] -u [username] -p[password] \ +# [db_name] \ +# > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak +@ lxc-attach $ID -- mysqldump --single-transaction nextcloud > nextcloud.sql + +# files... +pct mount $ID +rsync -Aavx /var/lib/lxc/$ID/rootfs/var/www/nextcloud-data . +pct unmount $ID + +@ lxc-attach $ID -- turnkey-occ maintenance:mode --off + + + +#---------------------------------------------------------------------- +# vim:set ts=4 sw=4 nowrap : diff --git a/nextcloud/make.sh b/nextcloud/make.sh index afec917..0638357 100755 --- a/nextcloud/make.sh +++ b/nextcloud/make.sh @@ -15,89 +15,6 @@ source ../.pct-helpers readConfig -#---------------------------------------------------------------------- -# backup/restore... - -# Backup... -# see: -# https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html -if [ $1 == 'backup' ] ; then - # XXX confirm vars... - # XXX - - DATE=$(date +%Y%m%d%H%M) - DIR=${DATE}-${CTHOSTNAME}-${ID} - - mkdir "${DIR}" - cd "${DIR}" - - @ lxc-attach $ID -- turnkey-occ maintenance:mode --on - - # sql... - # XXX db: - # mysqldump --single-transaction \ - # -h [server] -u [username] -p[password] \ - # [db_name] \ - # > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak - # or: - # mysqldump --single-transaction --default-character-set=utf8mb4 \ - # -h [server] -u [username] -p[password] \ - # [db_name] \ - # > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak - @ lxc-attach $ID -- mysqldump --single-transaction nextcloud > nextcloud.sql - - # files... - pct mount $ID - rsync -Aavx /var/lib/lxc/$ID/rootfs/var/www/nextcloud-data . - pct unmount $ID - - @ lxc-attach $ID -- turnkey-occ maintenance:mode --off - exit - -# Restore backup... -# see: -# https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html -elif [ $1 == 'restore' ] ; then - # XXX confirm vars... - # XXX - - @ lxc-attach $ID -- turnkey-occ maintenance:mode --on - - # XXX - - @ lxc-attach $ID -- turnkey-occ maintenance:mode --off - exit - -# Migrate... -elif [ $1 == 'migrate' ] ; then - # XXX similar to make.sh backup && make.sh restore but copies data directly (rsync)... - # XXX - @ lxc-attach $A -- turnkey-occ maintenance:mode --on - @ lxc-attach $B -- turnkey-occ maintenance:mode --on - - # sql - # mysql -h [server] -u [username] -p[password] -e "DROP DATABASE nextcloud" - # mysql -h [server] -u [username] -p[password] -e "CREATE DATABASE nextcloud" - # mysql -h [server] -u [username] -p[password] [db_name] < nextcloud-sqlbkp.bak - - # XXX need to echo this -- @ will not work here as we need to include the pipe... - (lxc-attach $A -- mysqldump --single-transaction nextcloud \ - | lxc-attach $B -- mysql nextcloud) - - # files... - pct mount $A - pct mount $B - rsync -Aavx \ - /var/lib/lxc/$A/rootfs/var/www/nextcloud-data - /var/lib/lxc/$B/rootfs/var/www/nextcloud-data - pct unmount $A - pct unmount $B - - @ lxc-attach $A -- turnkey-occ maintenance:mode --off - @ lxc-attach $B -- turnkey-occ maintenance:mode --off - exit -fi - #---------------------------------------------------------------------- # build... diff --git a/nextcloud/migrate.sh b/nextcloud/migrate.sh new file mode 100755 index 0000000..91cc293 --- /dev/null +++ b/nextcloud/migrate.sh @@ -0,0 +1,49 @@ +#!/usr/bin/bash +#---------------------------------------------------------------------- + +cd $(dirname $0) +PATH=$PATH:$(dirname "$(pwd)") + + +#---------------------------------------------------------------------- + +source ../.pct-helpers + + +#---------------------------------------------------------------------- + +readConfig + + +#---------------------------------------------------------------------- + + + + +#---------------------------------------------------------------------- + +@ lxc-attach $FROM -- turnkey-occ maintenance:mode --on +@ lxc-attach $TO -- turnkey-occ maintenance:mode --on + +# sql +@ lxc-attach $TO -- mysql -e "DROP DATABASE nextcloud" +@ lxc-attach $TO -- mysql -e "CREATE DATABASE nextcloud" +@@ "lxc-attach $FROM -- mysqldump --single-transaction nextcloud \ + | lxc-attach $TO -- mysql nextcloud" + +# files... +pct mount $FROM +pct mount $TO +rsync -Aavx \ + /var/lib/lxc/$FROM/rootfs/var/www/nextcloud-data + /var/lib/lxc/$TO/rootfs/var/www/nextcloud-data +pct unmount $FROM +pct unmount $TO + +@ lxc-attach $FROM -- turnkey-occ maintenance:mode --off +@ lxc-attach $TO -- turnkey-occ maintenance:mode --off + + + +#---------------------------------------------------------------------- +# vim:set ts=4 sw=4 nowrap : diff --git a/nextcloud/restore.sh b/nextcloud/restore.sh new file mode 100755 index 0000000..a3ed450 --- /dev/null +++ b/nextcloud/restore.sh @@ -0,0 +1,40 @@ +#!/usr/bin/bash +#---------------------------------------------------------------------- + +cd $(dirname $0) +PATH=$PATH:$(dirname "$(pwd)") + + +#---------------------------------------------------------------------- + +source ../.pct-helpers + + +#---------------------------------------------------------------------- + +readConfig + + +#---------------------------------------------------------------------- +# Restore backup... +# see: +# https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html + + + + +#---------------------------------------------------------------------- + +# XXX confirm vars... +# XXX + +@ lxc-attach $ID -- turnkey-occ maintenance:mode --on + +# XXX + +@ lxc-attach $ID -- turnkey-occ maintenance:mode --off + + + +#---------------------------------------------------------------------- +# vim:set ts=4 sw=4 nowrap :