-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexportMySQL.sh
94 lines (73 loc) · 2.17 KB
/
exportMySQL.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
#!/bin/bash
if ! command -v gzip > /dev/null; then
echo "gzip no se encuentra, no se comprime"
fi
if ! command -v mysqldump > /dev/null; then
echo "mysqldump no se encuentra, abortando"
exit 1
fi
# EXPORT
echo -n "Usuario DB: "
read USUARIO_DB
if [ "$USUARIO_DB" != "root" ]; then
USUARIO_COMMAND="-u$USUARIO_DB -p"
else
if [ -f /root/.my.cnf ]; then
echo "Exportando utilizando credenciales de /root/.my.cnf"
else
USUARIO_COMMAND="-u$USUARIO_DB -p"
fi
fi
echo -n "Nombre de la DB: "
read NOMBRE_DB
if [ "$USUARIO_DB" != "root" ]; then
echo -n "MySQL " # PARA QUE SE ACOPLE AL PEDIDO DE PASSWORD DEL COMANDO MYSQLDUMP
fi
echo -n "Host (default 127.0.0.1): "
read HOST
if [ ! -z $HOST ]; then
HOST="-h $HOST"
fi
echo "Exportando base $NOMBRE_DB..."
if command -v gzip > /dev/null; then
MYSQLFILE="./$NOMBRE_DB.sql.gz"
mysqldump $USUARIO_COMMAND $HOST --no-create-db --routines --skip-comments --add-drop-table $NOMBRE_DB | sed -E 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' | gzip > $MYSQLFILE
else
MYSQLFILE="./$NOMBRE_DB.sql"
mysqldump $USUARIO_COMMAND $HOST --no-create-db --routines --skip-comments --add-drop-table $NOMBRE_DB | sed -E 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' > $MYSQLFILE
fi
if [ ! -f $MYSQLFILE ] || [ ! -s $MYSQLFILE ]; then
echo ""
echo "El archivo exportado no parece válido, abortando."
exit 1
fi
echo "Base de datos $NOMBRE_DB exportada en $MYSQLFILE."
# TRANSFERENCIA
while [ -z $TRANSFER ]; do
echo -n "¿Quieres transferir el export a un servidor remoto? [s/n]: "
read TRANSFER
done
if [ "$TRANSFER" = "n" ] || [ $TRANSFER = "N" ]; then
echo "No se tranfiere"
exit 0
fi
if ! command -v rsync > /dev/null; then
echo "rsync no detectado, no se transfiere."
exit 0
fi
echo -n "Host remoto: "
read HOST_REMOTO
echo -n "Usuario remoto: "
read USUARIO_REMOTO
echo -n "Puerto SSH (default 22): "
read PUERTO_SSH
if [ -z $PUERTO_SSH ]; then
PUERTO_SSH=22
fi
echo -n "Path remoto (default: home del usuario): "
read PATH_REMOTO
if [ -z $PATH_REMOTO ]; then
PATH_REMOTO=""
fi
echo "Tranfiriendo archivo $MYSQLFILE a $HOST_REMOTO..."
rsync -avz -e "ssh -p $PUERTO_SSH" --progress $MYSQLFILE $USUARIO_REMOTO@$HOST_REMOTO:$PATH_REMOTO