From b93aec5adc59fb9411766bf324db74853fe271cd Mon Sep 17 00:00:00 2001 From: nachoparker Date: Fri, 11 May 2018 09:02:09 +0200 Subject: nc-restore: separate in its own executable --- etc/ncp-config.d/nc-restore.sh | 184 ++++++++++++++++++++++------------------- update.sh | 3 +- 2 files changed, 99 insertions(+), 88 deletions(-) diff --git a/etc/ncp-config.d/nc-restore.sh b/etc/ncp-config.d/nc-restore.sh index e613cf32..d17a4dfa 100644 --- a/etc/ncp-config.d/nc-restore.sh +++ b/etc/ncp-config.d/nc-restore.sh @@ -17,7 +17,6 @@ BACKUPFILE_=/media/USBdrive/nextcloud-bkp_xxxxxxxx.tar -DBADMIN=ncadmin DESCRIPTION="Restore a previously backuped NC instance" INFOTITLE="Restore NextCloud backup" @@ -28,53 +27,59 @@ NextCloud instance, including files and database. You can use nc-backup" -configure() +install() { - local DBPASSWD=$( grep password /root/.my.cnf | sed 's|password=||' ) + cat > /usr/local/bin/ncp-restore <<'EOF' +#!/bin/bash - [ -f $BACKUPFILE_ ] || { echo "$BACKUPFILE_ not found"; return 1; } - [ -d /var/www/nextcloud ] && { echo "INFO: overwriting old instance" ; } +BACKUPFILE="$1" - local TMPDIR="$( dirname $BACKUPFILE_ )/$( basename ${BACKUPFILE_}-tmp )" - rm -rf "$TMPDIR" && mkdir -p "$TMPDIR" +DBADMIN=ncadmin +DBPASSWD=$( grep password /root/.my.cnf | sed 's|password=||' ) - # EXTRACT FILES - [[ "$BACKUPFILE_" =~ ".tar.gz" ]] && local COMPRESSED=1 || local COMPRESSED=0 - [[ "$COMPRESSED" == "1" ]] && { - echo "decompressing backup file $BACKUPFILE_..." - tar -xzf "$BACKUPFILE_" -C "$TMPDIR" || return 1 - BACKUPFILE_="$( ls "$TMPDIR"/*.tar 2>/dev/null )" - [[ -f "$BACKUPFILE_" ]] || { echo "$BACKUPFILE_ not found"; return 1; } - } +[ -f $BACKUPFILE ] || { echo "$BACKUPFILE not found"; exit 1; } +[ -d /var/www/nextcloud ] && { echo "INFO: overwriting old instance" ; } - echo "extracting backup file $BACKUPFILE_..." - tar -xf "$BACKUPFILE_" -C "$TMPDIR" || return 1 +TMPDIR="$( dirname $BACKUPFILE )/$( basename ${BACKUPFILE}-tmp )" +rm -rf "$TMPDIR" && mkdir -p "$TMPDIR" - ## SANITY CHECKS - [[ -d "$TMPDIR"/nextcloud ]] && [[ -f "$( ls "$TMPDIR"/nextcloud-sqlbkp_*.bak 2>/dev/null )" ]] || { - echo "invalid backup file. Abort" - return 1 - } +# EXTRACT FILES +[[ "$BACKUPFILE" =~ ".tar.gz" ]] && COMPRESSED=1 || COMPRESSED=0 +[[ "$COMPRESSED" == "1" ]] && { + echo "decompressing backup file $BACKUPFILE..." + tar -xzf "$BACKUPFILE" -C "$TMPDIR" || exit 1 + BACKUPFILE="$( ls "$TMPDIR"/*.tar 2>/dev/null )" + [[ -f "$BACKUPFILE" ]] || { echo "$BACKUPFILE not found"; exit 1; } +} + +echo "extracting backup file $BACKUPFILE..." +tar -xf "$BACKUPFILE" -C "$TMPDIR" || exit 1 + +## SANITY CHECKS +[[ -d "$TMPDIR"/nextcloud ]] && [[ -f "$( ls "$TMPDIR"/nextcloud-sqlbkp_*.bak 2>/dev/null )" ]] || { + echo "invalid backup file. Abort" + exit 1 +} - ## RESTORE FILES +## RESTORE FILES - echo "restore files..." - rm -rf /var/www/nextcloud - mv "$TMPDIR"/nextcloud /var/www || { echo "Error restoring base files"; return 1; } +echo "restore files..." +rm -rf /var/www/nextcloud +mv "$TMPDIR"/nextcloud /var/www || { echo "Error restoring base files"; exit 1; } - # update NC database password to this instance - sed -i "s|'dbpassword' =>.*|'dbpassword' => '$DBPASSWD',|" /var/www/nextcloud/config/config.php +# update NC database password to this instance +sed -i "s|'dbpassword' =>.*|'dbpassword' => '$DBPASSWD',|" /var/www/nextcloud/config/config.php - # update redis credentials - local REDISPASS="$( grep "^requirepass" /etc/redis/redis.conf | cut -f2 -d' ' )" - [[ "$REDISPASS" != "" ]] && \ - sed -i "s|'password'.*|'password' => '$REDISPASS',|" /var/www/nextcloud/config/config.php - service redis restart +# update redis credentials +REDISPASS="$( grep "^requirepass" /etc/redis/redis.conf | cut -f2 -d' ' )" +[[ "$REDISPASS" != "" ]] && \ + sed -i "s|'password'.*|'password' => '$REDISPASS',|" /var/www/nextcloud/config/config.php +service redis restart - ## RE-CREATE DATABASE TABLE +## RE-CREATE DATABASE TABLE - echo "restore database..." - mysql -u root </dev/null & - fi + sudo -u www-data php occ maintenance:mode --off + sudo -u www-data php occ files:scan --all # Just in case we moved the opcache dir sed -i "s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR/.opcache|" /etc/php/7.0/mods-available/opcache.ini - # update fail2ban logpath - sed -i "s|logpath =.*|logpath = $DATADIR/nextcloud.log|" /etc/fail2ban/jail.conf - pgrep fail2ban &>/dev/null && service fail2ban restart + # cache needs to be cleaned as of NC 12 + bash -c " sleep 3 + systemctl stop php7.0-fpm + systemctl stop mysqld + sleep 0.5 + systemctl start php7.0-fpm + systemctl start mysqld + " &>/dev/null & +fi - # refresh nextcloud trusted domains - bash /usr/local/bin/nextcloud-domain.sh +# Just in case we moved the opcache dir +sed -i "s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR/.opcache|" /etc/php/7.0/mods-available/opcache.ini - rm -r "$TMPDIR" +# update fail2ban logpath +sed -i "s|logpath =.*|logpath = $DATADIR/nextcloud.log|" /etc/fail2ban/jail.conf +pgrep fail2ban &>/dev/null && service fail2ban restart + +# refresh nextcloud trusted domains +bash /usr/local/bin/nextcloud-domain.sh + +rm -r "$TMPDIR" +EOF + chmod +x /usr/local/bin/ncp-restore } -install() { :; } +configure() +{ + ncp-restore "$BACKUPFILE_" +} # License # diff --git a/update.sh b/update.sh index d21f7034..d289179b 100755 --- a/update.sh +++ b/update.sh @@ -131,9 +131,10 @@ done } } - # update nc-backup + # update nc-backup and nc-restore cd "$CONFDIR" &>/dev/null install_script nc-backup.sh + install_script nc-restore.sh cd - &>/dev/null -- cgit v1.2.3