-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsql_backup.sh
100 lines (90 loc) · 2.27 KB
/
sql_backup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
# Author https://github.com/michal-repo/
#
# Required apps: mysqldump, gzip
clear
echo "This process will let you create backup of selected DB. Provide some information first."
echo ""
echo "Which database you want to backup?"
while :
do
read -p "> " selected_db
if [[ "$selected_db" == *" "* ]]
then
echo "No whitespaces allowed."
else
break
fi
done
clear
echo "Which tables you want to backup? Separate them with single space (eg. table1 table2 table 3). Leave empty for entire database"
while :
do
read -p "> " selected_tables
if [[ "$selected_tables" == *","* ]]
then
echo "Separate tables with single space."
else
break
fi
done
clear
echo "Do you want to compress your backup?"
select selected_compress in "Yes" "No"
do
case $selected_compress in
"Yes")
echo "Backup will be compressed"
break
;;
"No")
echo "No compression"
break
;;
*) echo "invalid option $REPLY";;
esac
done
clear
echo "Provide name for output backup file."
while :
do
read -p "> " selected_backup_name
if [[ "$selected_backup_name" == *".sql" ]] || [[ "$selected_backup_name" == *".tar" ]] || [[ "$selected_backup_name" == *".gz" ]]
then
echo "Provide only file name, without extension."
else
break
fi
done
clear
echo "Summary: "
echo "Selected Database: $selected_db"
echo "Selected tables: $selected_tables"
echo "Backup compression: $selected_compress"
echo "Backup file name: $selected_backup_name"
echo ""
echo "Is this correct?"
select confirm in "Yes" "No"
do
case $confirm in
"Yes")
echo "Proceeding..."
case $selected_compress in
"Yes")
mysqldump $selected_db $selected_tables | gzip > "$selected_backup_name.sql.gz"
break
;;
"No")
mysqldump $selected_db $selected_tables > "$selected_backup_name.sql"
break
;;
esac
break
;;
"No")
echo "Try again."
break
;;
*) echo "invalid option $REPLY";;
esac
done