]> git.p6c8.net - nextcloud-backup-restore.git/commitdiff
Added support for PostgreSQL; Restore MySQL with UTF8 support
authorDecaTec <jr@decatec.de>
Mon, 24 Dec 2018 14:36:09 +0000 (15:36 +0100)
committerDecaTec <jr@decatec.de>
Mon, 24 Dec 2018 14:36:09 +0000 (15:36 +0100)
NextcloudBackup.sh
NextcloudRestore.sh
README.md

index fb20a47877a3c231d4d2f586297643dfd2889687..3e08cb4151dde6690d07ec1e26f034a47968105e 100644 (file)
@@ -123,7 +123,11 @@ echo
 # Backup DB
 #
 echo "Backup Nextcloud database..."
+# MySQL/MariaDB:
 mysqldump --single-transaction -h localhost -u "${dbUser}" -p"${dbPassword}" "${nextcloudDatabase}" > "${backupdir}/${fileNameBackupDb}"
+
+# PostgreSQL (uncomment if you are using PostgreSQL as Nextcloud database)
+#PGPASSWORD="${dbPassword}" pg_dump "${nextcloudDatabase}" -h localhost -U "${dbUser}" -f "${backupdir}/${fileNameBackupDb}"
 echo "Done"
 echo
 
index b64d75825f44ce14836e9c6288779a097dadfd20..e57b9982ec88f00b84ca823a45629e2e78796b2b 100644 (file)
@@ -121,17 +121,32 @@ echo
 # Restore database
 #
 echo "Dropping old Nextcloud DB..."
+# MySQL/MariaDB:
 mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "DROP DATABASE ${nextcloudDatabase}"
+
+# PostgreSQL (uncomment if you are using PostgreSQL as Nextcloud database)
+#PGPASSWORD="${dbPassword} psql -h localhost -U "${dbUser}" -d nextcloud -c "DROP DATABASE \"${nextcloudDatabase}\";"
 echo "Done"
 echo
 
 echo "Creating new DB for Nextcloud..."
-mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "CREATE DATABASE ${nextcloudDatabase}"
+# MySQL/MariaDB:
+# Use this if the databse from the backup uses UTF8 with multibyte support (e.g. for emoijs in filenames):
+mysql -h localhost -u "${dbUser}" -p"${dbPassword}" -e "CREATE DATABASE ${nextcloudDatabase} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
+# 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}"
+
+# PostgreSQL (uncomment if you are using PostgreSQL as Nextcloud database)
+#PGPASSWORD="${dbPassword}" psql -h localhost -U "${dbUser}" -d "${nextcloudDatabase}" -c "CREATE DATABASE \"${nextcloudDatabase}\";"
 echo "Done"
 echo
 
 echo "Restoring backup DB..."
+# MySQL/MariaDB:
 mysql -h localhost -u "${dbUser}" -p"${dbPassword}" "${nextcloudDatabase}" < "${currentRestoreDir}/${fileNameBackupDb}"
+
+# PostgreSQL (uncomment if you are using PostgreSQL as Nextcloud database)
+#PGPASSWORD="${dbPassword}" pg_restore -c -d "${nextcloudDatabase}" -h localhost -U "${dbUser}" "${currentRestoreDir}/${fileNameBackupDb}"
 echo "Done"
 echo
 
index d4892884c59f9bf19219635edb3a96f0f608b1d8..8849dd746db242f6577b523dfb16ef4f7f464e59 100644 (file)
--- a/README.md
+++ b/README.md
@@ -19,8 +19,8 @@ The scripts take care of these three items to backup automatically.
 - The scripts assume that Nextcloud's data directory is *not* a subdirectory of the Nextcloud installation (file directory). The general recommendation is that the data directory should not be located somewhere in the web folder of your webserver (usually */var/www/*), but in a different folder (e.g. */var/nextcloud_data*). For more information, see [here](https://docs.nextcloud.com/server/15/admin_manual/installation/installation_wizard.html#data-directory-location-label).
 - However, if your data directory *is* located under the Nextcloud file directory, you'll have to change the scripts so that the data directory is not part of the backup/restore (otherwise, it would be copied twice).
 - The scripts only backup the Nextcloud data directory. If you have any external storage mounted in Nextcloud, these directories have to be handled separately.
-- If you have enabled 4 byte support (see [Nextcloud Administration Manual](https://docs.nextcloud.com/server/15/admin_manual/configuration_database/mysql_4byte_support.html)) while backup, you have to enable 4 byte support on the target system *before* restoring the backup.
-- If you do not want to save the database password in the scripts, remove the variable *dbPassword* and call *mysql* with the *-p* parameter (without password). When calling the scripts manually, you'll be asked for the database password. 
+- The scripts assume that you are using MySQL/MariaDB as database for Nextcloud. However, it also supports PostreSQL databases. In this case you have to uncomment the parts of backing up/restoring the database.
+- You should have enabled 4 byte support (see [Nextcloud Administration Manual](https://docs.nextcloud.com/server/15/admin_manual/configuration_database/mysql_4byte_support.html)) on your Nextcloud database. Otherwise, when you have *not* enabled 4 byte support, you have to edit the restore script, to that the database is not created with 4 byte support enabled.
 
 ## Backup
 

patrick-canterino.de