Skip to content

Commit a4f27a2

Browse files
author
nacho
committed
nc-restore: restore compressed backups
1 parent 10fd204 commit a4f27a2

File tree

2 files changed

+50
-42
lines changed

2 files changed

+50
-42
lines changed

changelog.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11

2-
[v0.44.5](https://github.com/nextcloud/nextcloudpi/commit/0ab0c5a) (2018-01-04) nc-backup: compress backups and refactoring
2+
[v0.44.6](https://github.com/nextcloud/nextcloudpi/commit/1b20f3d) (2018-01-05) nc-restore: restore compressed backups
3+
4+
[v0.44.5](https://github.com/nextcloud/nextcloudpi/commit/10fd204) (2018-01-04) nc-backup: compress backups and refactoring
35

46
[v0.44.4 ](https://github.com/nextcloud/nextcloudpi/commit/56576da) (2018-01-03) nc-restore: update redis password
57

etc/nextcloudpi-config.d/nc-restore.sh

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818

1919
BACKUPFILE_=/media/USBdrive/nextcloud-bkp_xxxxxxxx.tar
20-
BASEDIR=/var/www
2120
DBADMIN=ncadmin
2221
DESCRIPTION="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
5971
DROP DATABASE IF EXISTS nextcloud;
6072
CREATE DATABASE nextcloud;
@@ -64,57 +76,46 @@ CREATE USER '$DBADMIN'@'localhost' IDENTIFIED BY '$DBPASSWD';
6476
GRANT ALL PRIVILEGES ON nextcloud.* TO $DBADMIN@localhost;
6577
EXIT
6678
EOF
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
@@ -124,7 +125,12 @@ EOF
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

Comments
 (0)