diff --git a/.pct-helpers b/.pct-helpers index e6f0d90..fc7200b 100644 --- a/.pct-helpers +++ b/.pct-helpers @@ -38,6 +38,16 @@ function @ (){ return $? } +function @@ (){ + if [ -z $DRY_RUN ] ; then + ! [ $QUIET ] \ + && echo -e "${ECHO_PREFIX}$@" + eval "$@" + else + echo -e $@ + fi + return $? +} #---------------------------------------------------------------------- diff --git a/nextcloud/make.sh b/nextcloud/make.sh index 377b4ba..afec917 100755 --- a/nextcloud/make.sh +++ b/nextcloud/make.sh @@ -22,33 +22,79 @@ readConfig # see: # https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html if [ $1 == 'backup' ] ; then - # XXX maintenance mode: - # turnkey-occ maintenance:mode --on - # XXX files: - # rsync -Aavx nextcloud/ nextcloud-dirbkp_`date +"%Y%m%d"`/ + # 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] \ + # -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] \ + # -h [server] -u [username] -p[password] \ + # [db_name] \ # > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak - # XXX maintenance mode: - # turnkey-occ maintenance:mode --off + @ 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