Skip to content

Commit b78d690

Browse files
committed
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 <stephen@that.guru>
1 parent d83d60a commit b78d690

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

tools/backup-db.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Backup a MySQL database
4+
5+
set -e
6+
set -o pipefail
7+
8+
while getopts "h?" opt; do
9+
case "$opt" in
10+
h|\?)
11+
echo "Backup the 'patchwork' database to 'patchwork_backup'"
12+
echo ""
13+
echo "Does not rotate backups. Only MySQL is currently supported."
14+
exit 0
15+
;;
16+
esac
17+
done
18+
19+
echo "Checking if 'patchwork' database exists"
20+
if [[ ! $(sudo mysql -e "SHOW DATABASES LIKE 'patchwork'") ]]; then
21+
echo "There is no 'patchwork' database"
22+
exit 1
23+
fi
24+
25+
read -p "Do you want to proceed? (y/n) " yn
26+
case $yn in
27+
y)
28+
;;
29+
*)
30+
exit 0;;
31+
esac
32+
33+
echo "Creating patchwork_backup database"
34+
sudo mysql -e "DROP DATABASE IF EXISTS patchwork_backup; CREATE DATABASE patchwork_backup;"
35+
36+
echo "Backing up data..."
37+
sudo mysqldump patchwork | sudo mysql patchwork_backup

tools/restore-db.sh

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Backup a MySQL database
4+
5+
set -e
6+
set -o pipefail
7+
8+
while getopts "h?" opt; do
9+
case "$opt" in
10+
h|\?)
11+
echo "Restore the 'patchwork_backup' database backup to 'patchwork'"
12+
echo ""
13+
echo "Only MySQL is currently supported."
14+
exit 0
15+
;;
16+
esac
17+
done
18+
19+
echo "Checking if 'patchwork' database exists"
20+
if [[ ! $(sudo mysql -e "SHOW DATABASES LIKE 'patchwork'") ]]; then
21+
echo "There is no 'patchwork' database"
22+
exit 1
23+
fi
24+
25+
echo "Checking if 'patchwork_backup' database exists"
26+
if [[ ! $(sudo mysql -e "SHOW DATABASES LIKE 'patchwork_backup'") ]]; then
27+
echo "There is no 'patchwork_backup' database"
28+
exit 1
29+
fi
30+
31+
read -p "Do you want to proceed? (y/n) " yn
32+
case $yn in
33+
y)
34+
;;
35+
*)
36+
exit 0;;
37+
esac
38+
39+
echo "Wiping 'patchwork' database"
40+
sudo mysql -e "DROP DATABASE IF EXISTS patchwork; CREATE DATABASE patchwork;"
41+
42+
echo "Restoring data..."
43+
sudo mysqldump patchwork_backup | sudo mysql patchwork

0 commit comments

Comments
 (0)