]> git.p6c8.net - nextcloud-backup-restore.git/blobdiff - NextcloudRestore.sh
No need to modify code to restore local external storage anymore
[nextcloud-backup-restore.git] / NextcloudRestore.sh
index 51581be4c601177fe5ae1a147a7264e5ec3d9e64..fcb6589db220e735bdfb1b83a5ddd47327df2066 100644 (file)
@@ -3,7 +3,7 @@
 #
 # Bash script for restoring backups of Nextcloud.
 #
-# Version 2.1.0
+# Version 2.1.3
 #
 # Usage:
 #   - With backup directory specified in the script: ./NextcloudRestore.sh <BackupName> (e.g. ./NextcloudRestore.sh 20170910_132703)
@@ -73,12 +73,15 @@ if [ "$useCompression" = true ] ; then
     fileNameBackupDataDir='nextcloud-datadir.tar.gz'
 fi
 
-# TODO: Uncomment if you use local external storage
-#fileNameBackupExternalDataDir='nextcloud-external-datadir.tar'
-#
-#if [ "$useCompression" = true ] ; then
-#    fileNameBackupExternalDataDir='nextcloud-external-datadir.tar.gz'
-#fi
+fileNameBackupExternalDataDir=''
+
+if [ ! -z "${nextcloudLocalExternalDataDir+x}" ] ; then
+    fileNameBackupExternalDataDir='nextcloud-external-datadir.tar'
+
+    if [ "$useCompression" = true ] ; then
+        fileNameBackupExternalDataDir='nextcloud-external-datadir.tar.gz'
+    fi
+fi
 
 fileNameBackupDb='nextcloud-db.sql'
 
@@ -135,7 +138,7 @@ fi
 #
 # Set maintenance mode
 #
-echo "Set maintenance mode for Nextcloud..."
+echo "$(date +"%H:%M:%S"): Set maintenance mode for Nextcloud..."
 sudo -u "${webserverUser}" php ${nextcloudFileDir}/occ maintenance:mode --on
 echo "Done"
 echo
@@ -143,7 +146,7 @@ echo
 #
 # Stop web server
 #
-echo "Stopping web server..."
+echo "$(date +"%H:%M:%S"): Stopping web server..."
 systemctl stop "${webserverServiceName}"
 echo "Done"
 echo
@@ -153,36 +156,37 @@ echo
 #
 
 # File directory
-echo "Deleting old Nextcloud file directory..."
+echo "$(date +"%H:%M:%S"): Deleting old Nextcloud file directory..."
 rm -r "${nextcloudFileDir}"
 mkdir -p "${nextcloudFileDir}"
 echo "Done"
 echo
 
 # Data directory
-echo "Deleting old Nextcloud data directory..."
+echo "$(date +"%H:%M:%S"): Deleting old Nextcloud data directory..."
 rm -r "${nextcloudDataDir}"
 mkdir -p "${nextcloudDataDir}"
 echo "Done"
 echo
 
 # Local external storage
-# TODO: Uncomment if you use local external storage
-#echo "Deleting old Nextcloud local external storage directory..."
-#rm -r "${nextcloudLocalExternalDataDir}"
-#mkdir -p "${nextcloudLocalExternalDataDir}"
-#echo "Done"
-#echo
+if [ ! -z "${nextcloudLocalExternalDataDir+x}" ] ; then
+    echo "Deleting old Nextcloud local external storage directory..."
+    rm -r "${nextcloudLocalExternalDataDir}"
+    mkdir -p "${nextcloudLocalExternalDataDir}"
+    echo "Done"
+    echo
+fi
 
 #
 # Restore file and data directory
 #
 
 # File directory
-echo "Restoring Nextcloud file directory..."
+echo "$(date +"%H:%M:%S"): Restoring Nextcloud file directory..."
 
 if [ "$useCompression" = true ] ; then
-    tar -xmpzf "${currentRestoreDir}/${fileNameBackupFileDir}" -C "${nextcloudFileDir}"
+    tar -I pigz -xmpf "${currentRestoreDir}/${fileNameBackupFileDir}" -C "${nextcloudFileDir}"
 else
     tar -xmpf "${currentRestoreDir}/${fileNameBackupFileDir}" -C "${nextcloudFileDir}"
 fi
@@ -191,10 +195,10 @@ echo "Done"
 echo
 
 # Data directory
-echo "Restoring Nextcloud data directory..."
+echo "$(date +"%H:%M:%S"): Restoring Nextcloud data directory..."
 
 if [ "$useCompression" = true ] ; then
-    tar -xmpzf "${currentRestoreDir}/${fileNameBackupDataDir}" -C "${nextcloudDataDir}"
+    tar -I pigz -xmpf "${currentRestoreDir}/${fileNameBackupDataDir}" -C "${nextcloudDataDir}"
 else
     tar -xmpf "${currentRestoreDir}/${fileNameBackupDataDir}" -C "${nextcloudDataDir}"
 fi
@@ -203,22 +207,23 @@ echo "Done"
 echo
 
 # Local external storage
-# TODO: Uncomment if you use local external storage
-#echo "Restoring Nextcloud data directory..."
-#
-#if [ "$useCompression" = true ] ; then
-#    tar -xmpzf "${currentRestoreDir}/${fileNameBackupExternalDataDir}" -C "${nextcloudLocalExternalDataDir}"
-#else
-#    tar -xmpf "${currentRestoreDir}/${fileNameBackupExternalDataDir}" -C "${nextcloudLocalExternalDataDir}"
-#fi
-#
-#echo "Done"
-#echo
+if [ ! -z "${nextcloudLocalExternalDataDir+x}" ] ; then
+    echo "$(date +"%H:%M:%S"): Restoring Nextcloud data directory..."
+    
+    if [ "$useCompression" = true ] ; then
+        tar -I pigz -xmpf "${currentRestoreDir}/${fileNameBackupExternalDataDir}" -C "${nextcloudLocalExternalDataDir}"
+    else
+        tar -xmpf "${currentRestoreDir}/${fileNameBackupExternalDataDir}" -C "${nextcloudLocalExternalDataDir}"
+    fi
+    
+    echo "Done"
+    echo
+fi
 
 #
 # Restore database
 #
-echo "Dropping old Nextcloud DB..."
+echo "$(date +"%H:%M:%S"): Dropping old Nextcloud DB..."
 
 if [ "${databaseSystem,,}" = "mysql" ] || [ "${databaseSystem,,}" = "mariadb" ]; then
     mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "DROP DATABASE ${nextcloudDatabase}"
@@ -229,7 +234,7 @@ fi
 echo "Done"
 echo
 
-echo "Creating new DB for Nextcloud..."
+echo "$(date +"%H:%M:%S"): Creating new DB for Nextcloud..."
 
 if [ "${databaseSystem,,}" = "mysql" ] || [ "${databaseSystem,,}" = "mariadb" ]; then
     # Use this if the databse from the backup uses UTF8 with multibyte support (e.g. for emoijs in filenames):
@@ -237,13 +242,13 @@ if [ "${databaseSystem,,}" = "mysql" ] || [ "${databaseSystem,,}" = "mariadb" ];
     # TODO: Use this if the database from the backup DOES NOT use UTF8 with multibyte support (e.g. for emoijs in filenames):
     #mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "CREATE DATABASE ${nextcloudDatabase}"
 elif [ "${databaseSystem,,}" = "postgresql" ] || [ "${databaseSystem,,}" = "pgsql" ]; then
-    sudo -u postgres psql -c "CREATE DATABASE ${nextcloudDatabase} WITH OWNER ${dbUser} TEMPLATE template0 ENCODING \"UTF8\";"
+    sudo -u postgres psql -c "CREATE DATABASE ${nextcloudDatabase} WITH OWNER ${dbUser} TEMPLATE template0 ENCODING \"UNICODE\";"
 fi
 
 echo "Done"
 echo
 
-echo "Restoring backup DB..."
+echo "$(date +"%H:%M:%S"): Restoring backup DB..."
 
 if [ "${databaseSystem,,}" = "mysql" ] || [ "${databaseSystem,,}" = "mariadb" ]; then
        mysql -h localhost -u "${dbUser}" -p"${dbPassword}" "${nextcloudDatabase}" < "${currentRestoreDir}/${fileNameBackupDb}"
@@ -257,7 +262,7 @@ echo
 #
 # Start web server
 #
-echo "Starting web server..."
+echo "$(date +"%H:%M:%S"): Starting web server..."
 systemctl start "${webserverServiceName}"
 echo "Done"
 echo
@@ -265,18 +270,21 @@ echo
 #
 # Set directory permissions
 #
-echo "Setting directory permissions..."
+echo "$(date +"%H:%M:%S"): Setting directory permissions..."
 chown -R "${webserverUser}":"${webserverUser}" "${nextcloudFileDir}"
 chown -R "${webserverUser}":"${webserverUser}" "${nextcloudDataDir}"
-# TODO: Uncomment if you use local external storage
-#chown -R "${webserverUser}":"${webserverUser}" "${nextcloudLocalExternalDataDir}"
+
+if [ ! -z "${nextcloudLocalExternalDataDir+x}" ] ; then
+    chown -R "${webserverUser}":"${webserverUser}" "${nextcloudLocalExternalDataDir}"
+fi
+
 echo "Done"
 echo
 
 #
 # Update the system data-fingerprint (see https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html#maintenance-commands-label)
 #
-echo "Updating the system data-fingerprint..."
+echo "$(date +"%H:%M:%S"): Updating the system data-fingerprint..."
 sudo -u "${webserverUser}" php ${nextcloudFileDir}/occ maintenance:data-fingerprint
 echo "Done"
 echo
@@ -284,11 +292,11 @@ echo
 #
 # Disbale maintenance mode
 #
-echo "Switching off maintenance mode..."
+echo "$(date +"%H:%M:%S"): Switching off maintenance mode..."
 sudo -u "${webserverUser}" php ${nextcloudFileDir}/occ maintenance:mode --off
 echo "Done"
 echo
 
 echo
 echo "DONE!"
-echo "Backup ${restore} successfully restored."
\ No newline at end of file
+echo "$(date +"%H:%M:%S"): Backup ${restore} successfully restored."
\ No newline at end of file

patrick-canterino.de