-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathzmdbrestore.in
172 lines (149 loc) · 4.75 KB
/
zmdbrestore.in
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#!/bin/bash
#===============================================================================
#
# FILE: zmdbrestore
#
# USAGE: ./zmdbrestore
#
# DESCRIPTION: Restore a ZoneMinder DB from a backup created by zm_db_backup
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: (),
# COMPANY:
# VERSION: 1.0
# CREATED: 05/29/2006 04:45:06 PM PDT
# REVISION: ---
#===============================================================================
ZM_CONFIG=@ZM_CONFIG@
ZM_BACKUP=/var/lib/zm/zm_backup.sql
EVENTS_DIR=events
loadcfg() {
if [ -f $ZM_CONFIG ]; then
. $ZM_CONFIG
else
echo "ERROR: $ZM_CONFIG not found."
exit 1
fi
}
chkcfg(){
for n in ZM_DB_HOST ZM_DB_NAME ZM_DB_USER ZM_DB_PASS; do
eval "val=\$$n"
if [ "$val" = "" ]; then
echo "ERROR($ZM_CONFIG): $n should not be empty."
echo "Enter a $n for ZM to use the Database."
if [ "$n" = "ZM_DB_PASS" ]; then
echo -n "Will not echo on screen $n : "
stty -echo # Turns off screen echo.
read newval
stty echo # Restores screen echo.
echo ""
### The following can be used to generate a random password
# randstr newval 16
else
echo -n "$n : "
read newval
fi
cp $ZM_CONFIG /tmp/$$ &&
sed 's/^'$n='.*$/'$n=$newval'/g' /tmp/$$ >$ZM_CONFIG
fi
done
if [ "$ZM_DB_HOST" = "localhost" ]
then
ClientHost=localhost
else
ClientHost=`hostname`
fi
}
reloadcfg(){
loadcfg
}
chk_backup_ver(){
if
[ -e $ZM_BACKUP ]
then
BACKUP_VER=$(cat $ZM_BACKUP | head -n 2 |tail -n 1 |cut -f 8 -d " ")
else
echo "$ZM_BACKUP doesn't exist"
exit 1
fi
if
[ $BACKUP_VER != $ZM_VERSION ]
then
echo "$ZM_BACKUP is from version $BACKUP_VER"
echo "ZoneMinder version is $ZM_VERSION"
exit 1
fi
}
getmylogin(){
echo "Enter MySQL Administrator username"
echo "(Default: root and password is blank)"
echo -n "MySQL Admin: "
read MYADMIN
echo -n "Password: "
read MYPASS
if [ "X$MYPASS" != "X" ]; then MYPASS="-p$MYPASS"; fi
echo "\q" |mysql -u $MYADMIN $MYPASS || exit 0
}
checkfordb(){
if
echo "show databases" |mysql -u $MYADMIN "$MYPASS" |grep zm
then
echo "A $ZM_DB_NAME database exists."
while [ true ]
do
echo "Choose one of the following options:"
echo "[D]rop the old database and reinitialize"
echo "[E]xit and do nothing"
read OPTION
case $OPTION in
"D"|"d")
echo "drop database zm;"|mysql -u $MYADMIN $MYPASS
return
;;
"E"|"e")
exit 0
;;
esac
done
fi
}
initdb(){
sql=/tmp/zm.crdb.sql
echo "" >$sql
chmod 600 $sql
echo "CREATE DATABASE $ZM_DB_NAME;" >>$sql
echo "USE $ZM_DB_NAME;" >>$sql
echo "GRANT all on $ZM_DB_NAME.* TO '$ZM_DB_USER'@'$ClientHost' IDENTIFIED BY '$ZM_DB_PASS';" >>$sql
cat $sql | mysql -B -h $ZM_DB_HOST -u $MYADMIN $MYPASS
rm -f $sql
cat $ZM_PATH_UPDATE/zm_create.sql | mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME
}
restoredb(){
if
[ -e $ZM_BACKUP ]
then
cat $ZM_BACKUP | mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME
else
echo "$ZM_BACKUP doesn't exist"
exit 1
fi
}
restore_events(){
for SQL in $(find $ZM_PATH_WEB/$EVENTS_DIR -name .sql)
do
cat $SQL | mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME
done
}
loadcfg
chkcfg
reloadcfg
chk_backup_ver
getmylogin
checkfordb
initdb
restoredb
restore_events
exit 0