From b78d690842dd169918ab1570d64ef9168e494c83 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Thu, 24 Aug 2023 13:56:49 +0100 Subject: [PATCH] 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 --- tools/backup-db.sh | 37 +++++++++++++++++++++++++++++++++++++ tools/restore-db.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100755 tools/backup-db.sh create mode 100755 tools/restore-db.sh 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 -- 2.47.3