@@ -43,16 +43,18 @@ configure()
4343 [ -d $BASEDIR_ ] || { echo -e " $BASEDIR_ not found" ; return 1; }
4444 [ -d $BASEDIR_ /nextcloud ] && { echo -e " WARNING: overwriting old instance" ; }
4545
46- cd $BASEDIR_ /nextcloud
47- sudo -u www-data php occ maintenance:mode --on
46+ local TMPDIR=" $( dirname $BACKUPFILE_ ) /$( basename ${BACKUPFILE_} -tmp ) "
47+ rm -rf " $TMPDIR " && mkdir -p " $TMPDIR "
48+ tar -xf " $BACKUPFILE_ " -C " $TMPDIR " || return 1
49+
50+ # # RESTORE FILES
4851
49- # RESTORE FILES
5052 echo -e " restore files..."
51- cd $BASEDIR_
52- rm -rf nextcloud
53- tar -xf $BACKUPFILE_ || return 1
53+ rm -rf $BASEDIR_ /nextcloud
54+ mv " $TMPDIR " /nextcloud $BASEDIR_
55+
56+ # # RE-CREATE DATABASE TABLE
5457
55- # RE-CREATE DATABASE TABLE
5658 local DBPASSWD=$( grep password /root/.my.cnf | cut -d= -f2 )
5759 echo -e " restore database..."
5860 mysql -u root -p$DBPASSWD << EOF
@@ -64,15 +66,48 @@ CREATE USER '$DBADMIN_'@'localhost' IDENTIFIED BY '$DBPASSWD';
6466GRANT ALL PRIVILEGES ON nextcloud.* TO $DBADMIN_ @localhost;
6567EXIT
6668EOF
67- [ $? -ne 0 ] && { echo -e " error configuring nextcloud database" ; return 1; }
69+ [ $? -ne 0 ] && { echo -e " Error configuring nextcloud database" ; return 1; }
6870
69- mysql -u root -p$DBPASSWD nextcloud < nextcloud-sqlbkp_* .bak || { echo -e " error restoring nextcloud database" ; return 1; }
71+ mysql -u root -p$DBPASSWD nextcloud < " $TMPDIR " / nextcloud-sqlbkp_* .bak || { echo -e " Error restoring nextcloud database" ; return 1; }
7072
71- # Just in case we moved the opcache dir
72- sed -i " s|^opcache.file_cache=.*|opcache.file_cache=$BASEDIR_ /nextcloud/data/.opcache|" /etc/php/7.0/mods-available/opcache.ini
73+ # # RESTORE DATADIR
7374
7475 cd $BASEDIR_ /nextcloud
75- sudo -u www-data php occ maintenance:mode --off
76+
77+ # INCLUDEDATA=yes situation
78+
79+ if [[ $( ls " $TMPDIR " | wc -l ) == 2 ]]; then
80+ local DATADIR=$( grep datadirectory $BASEDIR_ /nextcloud/config/config.php | awk ' { print $3 }' | grep -oP " [^']*[^']" | head -1 )
81+ [[ " $DATADIR " == " " ]] && { echo -e " Error reading data directory" ; return 1; }
82+ echo -e " restore datadir to $DATADIR ..."
83+ rm -rf " $DATADIR "
84+ mkdir -p " $( dirname " $DATADIR " ) "
85+ mv " $TMPDIR /$( basename " $DATADIR " ) " " $DATADIR "
86+ sudo -u www-data php occ maintenance:mode --off
87+
88+ # INCLUDEDATA=no situation
89+
90+ else
91+ echo -e " no datadir found in backup"
92+ sed -i " s|'datadirectory' =>.*|'datadirectory' => '/var/www/nextcloud/data',|" " config/config.php"
93+
94+ sudo -u www-data php occ maintenance:mode --off
95+ sudo -u www-data php occ files:scan --all
96+
97+ # cache needs to be cleaned as of NC 12
98+ (
99+ sleep 3
100+ systemctl stop php7.0-fpm
101+ systemctl stop mysqld
102+ sleep 0.5
103+ systemctl start php7.0-fpm
104+ systemctl start mysqld
105+ ) & > /dev/null &
106+ fi
107+ rm -r " $TMPDIR "
108+
109+ # Just in case we moved the opcache dir
110+ sed -i " s|^opcache.file_cache=.*|opcache.file_cache=$BASEDIR_ /nextcloud/data/.opcache|" /etc/php/7.0/mods-available/opcache.ini
76111}
77112
78113install () { : ; }
0 commit comments