17
17
18
18
19
19
BACKUPFILE_=/media/USBdrive/nextcloud-bkp_xxxxxxxx.tar
20
- BASEDIR=/var/www
21
20
DBADMIN=ncadmin
22
21
DESCRIPTION=" Restore a previously backuped NC instance"
23
22
@@ -33,28 +32,41 @@ configure()
33
32
{
34
33
local DBPASSWD=$( grep password /root/.my.cnf | cut -d= -f2 )
35
34
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" ; }
39
37
40
38
local TMPDIR=" $( dirname $BACKUPFILE_ ) /$( basename ${BACKUPFILE_} -tmp ) "
41
39
rm -rf " $TMPDIR " && mkdir -p " $TMPDIR "
42
40
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_ ..."
44
50
tar -xf " $BACKUPFILE_ " -C " $TMPDIR " || return 1
45
51
46
52
# # RESTORE FILES
47
53
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; }
51
57
52
58
# 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
54
66
55
67
# # RE-CREATE DATABASE TABLE
56
68
57
- echo -e " restore database..."
69
+ echo " restore database..."
58
70
mysql -u root << EOF
59
71
DROP DATABASE IF EXISTS nextcloud;
60
72
CREATE DATABASE nextcloud;
@@ -64,57 +76,46 @@ CREATE USER '$DBADMIN'@'localhost' IDENTIFIED BY '$DBPASSWD';
64
76
GRANT ALL PRIVILEGES ON nextcloud.* TO $DBADMIN @localhost;
65
77
EXIT
66
78
EOF
67
- [ $? -ne 0 ] && { echo -e " Error configuring nextcloud database" ; return 1; }
79
+ [ $? -ne 0 ] && { echo " Error configuring nextcloud database" ; return 1; }
68
80
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; }
70
82
71
83
# # RESTORE DATADIR
72
84
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; }
74
93
75
- # INCLUDEDATA=yes situation
94
+ echo " restore datadir to $DATADIR ... "
76
95
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 " ]] && {
82
97
echo " backing up existing $DATADIR "
83
98
mv " $DATADIR " " $DATADIR -$( date " +%m-%d-%y" ) "
84
99
}
100
+
85
101
mkdir -p " $( dirname " $DATADIR " ) "
86
102
mv " $TMPDIR /$( basename " $DATADIR " ) " " $DATADIR "
87
103
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
-
94
104
sudo -u www-data php occ maintenance:mode --off
95
105
96
- # INCLUDEDATA=no situation
106
+ # ## INCLUDEDATA=no situation
97
107
98
108
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
112
111
113
112
sudo -u www-data php occ maintenance:mode --off
114
113
sudo -u www-data php occ files:scan --all
115
114
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
+
116
118
# cache needs to be cleaned as of NC 12
117
-
118
119
bash -c " sleep 3
119
120
systemctl stop php7.0-fpm
120
121
systemctl stop mysqld
124
125
" & > /dev/null &
125
126
fi
126
127
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
128
134
129
135
rm -r " $TMPDIR "
130
136
}
0 commit comments