1717
1818
1919BACKUPFILE_=/media/USBdrive/nextcloud-bkp_xxxxxxxx.tar
20- BASEDIR=/var/www
2120DBADMIN=ncadmin
2221DESCRIPTION=" Restore a previously backuped NC instance"
2322
@@ -33,28 +32,41 @@ configure()
3332{
3433 local DBPASSWD=$( grep password /root/.my.cnf | cut -d= -f2 )
3534
36- [ -f $BACKUPFILE_ ] || { echo -e " $BACKUPFILE_ not found" ; return 1; }
37- [ -d $BASEDIR ] || { echo -e " $BASEDIR not found" ; return 1; }
38- [ -d $BASEDIR /nextcloud ] && { echo -e " INFO: overwriting old instance" ; }
35+ [ -f $BACKUPFILE_ ] || { echo " $BACKUPFILE_ not found" ; return 1; }
36+ [ -d /var/www/nextcloud ] && { echo " INFO: overwriting old instance" ; }
3937
4038 local TMPDIR=" $( dirname $BACKUPFILE_ ) /$( basename ${BACKUPFILE_} -tmp ) "
4139 rm -rf " $TMPDIR " && mkdir -p " $TMPDIR "
4240
43- echo -e " extracting backup file $BACKUPFILE_ ..."
41+ # EXTRACT FILES
42+ [[ " $BACKUPFILE_ " =~ " .tar.gz" ]] && {
43+ echo " decompressing backup file $BACKUPFILE_ ..."
44+ tar -xzf " $BACKUPFILE_ " -C " $TMPDIR " || return 1
45+ BACKUPFILE_=" $( ls " $TMPDIR " /* .tar 2> /dev/null ) "
46+ [[ -f " $BACKUPFILE_ " ]] || { echo " $BACKUPFILE_ not found" ; return 1; }
47+ }
48+
49+ echo " extracting backup file $BACKUPFILE_ ..."
4450 tar -xf " $BACKUPFILE_ " -C " $TMPDIR " || return 1
4551
4652 # # RESTORE FILES
4753
48- echo -e " restore files..."
49- rm -rf $BASEDIR /nextcloud
50- mv " $TMPDIR " /nextcloud $BASEDIR || { echo -e " Error restoring base files" ; return 1; }
54+ echo " restore files..."
55+ rm -rf /var/www /nextcloud
56+ mv " $TMPDIR " /nextcloud /var/www || { echo " Error restoring base files" ; return 1; }
5157
5258 # update NC database password to this instance
53- sed -i " s|'dbpassword' =>.*|'dbpassword' => '$DBPASSWD ',|" $BASEDIR /nextcloud/config/config.php
59+ sed -i " s|'dbpassword' =>.*|'dbpassword' => '$DBPASSWD ',|" /var/www/nextcloud/config/config.php
60+
61+ # update redis credentials
62+ local REDISPASS=" $( grep " ^requirepass" /etc/redis/redis.conf | cut -f2 -d' ' ) "
63+ [[ " $REDISPASS " != " " ]] && \
64+ sed -i " s|'password'.*|'password' => '$REDISPASS ',|" /var/www/nextcloud/config/config.php
65+ service redis restart
5466
5567 # # RE-CREATE DATABASE TABLE
5668
57- echo -e " restore database..."
69+ echo " restore database..."
5870 mysql -u root << EOF
5971DROP DATABASE IF EXISTS nextcloud;
6072CREATE DATABASE nextcloud;
@@ -64,57 +76,46 @@ CREATE USER '$DBADMIN'@'localhost' IDENTIFIED BY '$DBPASSWD';
6476GRANT ALL PRIVILEGES ON nextcloud.* TO $DBADMIN @localhost;
6577EXIT
6678EOF
67- [ $? -ne 0 ] && { echo -e " Error configuring nextcloud database" ; return 1; }
79+ [ $? -ne 0 ] && { echo " Error configuring nextcloud database" ; return 1; }
6880
69- mysql -u root nextcloud < " $TMPDIR " /nextcloud-sqlbkp_* .bak || { echo -e " Error restoring nextcloud database" ; return 1; }
81+ mysql -u root nextcloud < " $TMPDIR " /nextcloud-sqlbkp_* .bak || { echo " Error restoring nextcloud database" ; return 1; }
7082
7183 # # RESTORE DATADIR
7284
73- cd $BASEDIR /nextcloud
85+ cd /var/www/nextcloud
86+
87+ # ## INCLUDEDATA=yes situation
88+
89+ if [[ $( ls " $TMPDIR " | wc -l ) == 3 ]]; then
90+
91+ local DATADIR=$( grep datadirectory /var/www/nextcloud/config/config.php | awk ' { print $3 }' | grep -oP " [^']*[^']" | head -1 )
92+ [[ " $DATADIR " == " " ]] && { echo " Error reading data directory" ; return 1; }
7493
75- # INCLUDEDATA=yes situation
94+ echo " restore datadir to $DATADIR ... "
7695
77- if [[ $( ls " $TMPDIR " | wc -l ) == 2 ]]; then
78- local DATADIR=$( grep datadirectory $BASEDIR /nextcloud/config/config.php | awk ' { print $3 }' | grep -oP " [^']*[^']" | head -1 )
79- [[ " $DATADIR " == " " ]] && { echo -e " Error reading data directory" ; return 1; }
80- echo -e " restore datadir to $DATADIR ..."
81- test -e " $DATADIR " && {
96+ [[ -e " $DATADIR " ]] && {
8297 echo " backing up existing $DATADIR "
8398 mv " $DATADIR " " $DATADIR -$( date " +%m-%d-%y" ) "
8499 }
100+
85101 mkdir -p " $( dirname " $DATADIR " ) "
86102 mv " $TMPDIR /$( basename " $DATADIR " ) " " $DATADIR "
87103
88- # Just in case we moved the opcache dir
89- sed -i " s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR /.opcache|" /etc/php/7.0/mods-available/opcache.ini
90-
91- # update fail2ban logpath
92- sed -i " s|logpath =.*|logpath = $DATADIR /nextcloud.log|" /etc/fail2ban/jail.conf
93-
94104 sudo -u www-data php occ maintenance:mode --off
95105
96- # INCLUDEDATA=no situation
106+ # ## INCLUDEDATA=no situation
97107
98108 else
99- echo -e " no datadir found in backup"
100- sed -i " s|'datadirectory' =>.*|'datadirectory' => '/var/www/nextcloud/data',|" config/config.php
101-
102- # Just in case we moved the opcache dir
103- sed -i " s|^opcache.file_cache=.*|opcache.file_cache=$BASEDIR /nextcloud/data/.opcache|" /etc/php/7.0/mods-available/opcache.ini
104-
105- # update fail2ban logpath
106- sed -i " s|logpath =.*|logpath = /var/www/nextcloud/data/nextcloud.log|" /etc/fail2ban/jail.conf
107-
108- # update redis credentials
109- local REDISPASS=" $( grep " ^requirepass" /etc/redis/redis.conf | cut -f2 -d' ' ) "
110- [[ " $REDISPASS " != " " ]] && \
111- sed -i " s|'password'.*|'password' => '$REDISPASS ',|" config/config.php
109+ echo " no datadir found in backup"
110+ local DATADIR=/var/www/nextcloud/data
112111
113112 sudo -u www-data php occ maintenance:mode --off
114113 sudo -u www-data php occ files:scan --all
115114
115+ # Just in case we moved the opcache dir
116+ sed -i " s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR /.opcache|" /etc/php/7.0/mods-available/opcache.ini
117+
116118 # cache needs to be cleaned as of NC 12
117-
118119 bash -c " sleep 3
119120 systemctl stop php7.0-fpm
120121 systemctl stop mysqld
124125 " & > /dev/null &
125126 fi
126127
127- service fail2ban restart
128+ # Just in case we moved the opcache dir
129+ sed -i " s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR /.opcache|" /etc/php/7.0/mods-available/opcache.ini
130+
131+ # update fail2ban logpath
132+ sed -i " s|logpath =.*|logpath = $DATADIR /nextcloud.log|" /etc/fail2ban/jail.conf
133+ pgrep fail2ban & > /dev/null && service fail2ban restart
128134
129135 rm -r " $TMPDIR "
130136}
0 commit comments