]> git.ipfire.org Git - thirdparty/patchwork.git/commitdiff
tools: Add helper script to backup, restore DB
authorStephen Finucane <stephen@that.guru>
Thu, 24 Aug 2023 12:56:49 +0000 (13:56 +0100)
committerStephen Finucane <stephen@that.guru>
Thu, 24 Aug 2023 12:56:49 +0000 (13:56 +0100)
This is handier than doing it via Django and works for my simple,
local-only workflow.

Signed-off-by: Stephen Finucane <stephen@that.guru>
tools/backup-db.sh [new file with mode: 0755]
tools/restore-db.sh [new file with mode: 0755]

diff --git a/tools/backup-db.sh b/tools/backup-db.sh
new file mode 100755 (executable)
index 0000000..6ea6018
--- /dev/null
@@ -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 (executable)
index 0000000..694465c
--- /dev/null
@@ -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