From: Stephen Finucane Date: Thu, 24 Aug 2023 12:56:49 +0000 (+0100) Subject: tools: Add helper script to backup, restore DB X-Git-Tag: v3.2.0~57 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b78d690842dd169918ab1570d64ef9168e494c83;p=thirdparty%2Fpatchwork.git tools: Add helper script to backup, restore DB This is handier than doing it via Django and works for my simple, local-only workflow. Signed-off-by: Stephen Finucane --- diff --git a/tools/backup-db.sh b/tools/backup-db.sh new file mode 100755 index 00000000..6ea60183 --- /dev/null +++ b/tools/backup-db.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# +# Backup a MySQL database + +set -e +set -o pipefail + +while getopts "h?" opt; do + case "$opt" in + h|\?) + echo "Backup the 'patchwork' database to 'patchwork_backup'" + echo "" + echo "Does not rotate backups. Only MySQL is currently supported." + exit 0 + ;; + esac +done + +echo "Checking if 'patchwork' database exists" +if [[ ! $(sudo mysql -e "SHOW DATABASES LIKE 'patchwork'") ]]; then + echo "There is no 'patchwork' database" + exit 1 +fi + +read -p "Do you want to proceed? (y/n) " yn +case $yn in + y) + ;; + *) + exit 0;; +esac + +echo "Creating patchwork_backup database" +sudo mysql -e "DROP DATABASE IF EXISTS patchwork_backup; CREATE DATABASE patchwork_backup;" + +echo "Backing up data..." +sudo mysqldump patchwork | sudo mysql patchwork_backup diff --git a/tools/restore-db.sh b/tools/restore-db.sh new file mode 100755 index 00000000..694465c1 --- /dev/null +++ b/tools/restore-db.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# +# Backup a MySQL database + +set -e +set -o pipefail + +while getopts "h?" opt; do + case "$opt" in + h|\?) + echo "Restore the 'patchwork_backup' database backup to 'patchwork'" + echo "" + echo "Only MySQL is currently supported." + exit 0 + ;; + esac +done + +echo "Checking if 'patchwork' database exists" +if [[ ! $(sudo mysql -e "SHOW DATABASES LIKE 'patchwork'") ]]; then + echo "There is no 'patchwork' database" + exit 1 +fi + +echo "Checking if 'patchwork_backup' database exists" +if [[ ! $(sudo mysql -e "SHOW DATABASES LIKE 'patchwork_backup'") ]]; then + echo "There is no 'patchwork_backup' database" + exit 1 +fi + +read -p "Do you want to proceed? (y/n) " yn +case $yn in + y) + ;; + *) + exit 0;; +esac + +echo "Wiping 'patchwork' database" +sudo mysql -e "DROP DATABASE IF EXISTS patchwork; CREATE DATABASE patchwork;" + +echo "Restoring data..." +sudo mysqldump patchwork_backup | sudo mysql patchwork