-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patht3-sync
More file actions
executable file
·202 lines (175 loc) · 6.83 KB
/
t3-sync
File metadata and controls
executable file
·202 lines (175 loc) · 6.83 KB
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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#!/bin/bash
#colors
ORANGE='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
#parse_yaml function
parse_yaml() {
local prefix=$2
local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 |
awk -F$fs '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {if (i > indent) {delete vname[i]}}
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
}
}'
}
# Check YAML files
if [ ! -f .t3.sync.yaml ]; then
echo ".t3.sync.yaml not found!"
cp ~/bin_t3/lib/.t3.sync.yaml .t3.sync.yaml
(echo "" && echo ".t3.sync.yaml") >> .gitignore
exit
fi
# Read yaml file
load_yaml() {
eval $(parse_yaml .t3.sync.yaml "secret_")
}
#General variables
NOVAR="Missing entry in the YAML"
load_yaml
UTF8='--default-character-set=utf8'
echo
echo "Develop >>"
echo "Webspace User:" $secret_develop_user
echo "Webspace User:" $secret_develop_host
echo "Webspace Path:" $secret_develop_path
echo "MySQL Database:" $secret_develop_mysql_database
echo "MySQL User:" $secret_develop_mysql_user
echo "MySQL Host:" $secret_develop_mysql_host
echo "MySQL Password:" $secret_develop_mysql_pw
echo
echo "Master >>"
echo "Webspace User:" $secret_master_user
echo "Webspace User:" $secret_master_host
echo "Webspace Path:" $secret_master_path
echo "MySQL Database:" $secret_master_mysql_database
echo "MySQL User:" $secret_master_mysql_user
echo "MySQL Host:" $secret_master_mysql_host
echo "MySQL Password:" $secret_master_mysql_pw
echo
echo "Local >>"
echo "Domain:" $secret_local_domain
echo "Webroot:" $secret_local_webroot
echo "MySQL Database:" $secret_local_mysql_database
echo "MySQL User:" $secret_local_mysql_user
echo "MySQL Host:" $secret_local_mysql_host
echo "MySQL Password:" $secret_local_mysql_pw
echo
if [ -z "$secret_local_mysql_database" ]
then
printf $RED
echo "Please update your .t3.sync.yaml file - Have a look here:"
echo "https://github.com/Startpiloten/bin_t3/blob/master/lib/.t3.sync.yaml"
printf $NC
exit
fi
printf $NC
sync_develop_db_files(){
ssh ${secret_develop_user}@${secret_develop_host} mysqldump ${UTF8} -u${secret_develop_mysql_user} -p${secret_develop_mysql_pw} -h${secret_develop_mysql_host} ${secret_develop_mysql_database} | mysql ${UTF8} -p${secret_local_mysql_pw} -u${secret_local_mysql_user} -h${secret_local_mysql_host} ${secret_local_mysql_database}
rsync -avz --exclude '_processed_' $secret_develop_user@$secret_develop_host:$secret_develop_path/fileadmin ${secret_local_webroot}/
rsync -avz --exclude '_processed_' $secret_develop_user@$secret_develop_host:$secret_develop_path/uploads ${secret_local_webroot}/
}
sync_develop_db(){
ssh ${secret_develop_user}@${secret_develop_host} mysqldump ${UTF8} -u${secret_develop_mysql_user} -p${secret_develop_mysql_pw} -h${secret_develop_mysql_host} ${secret_develop_mysql_database} | mysql ${UTF8} -p${secret_local_mysql_pw} -u${secret_local_mysql_user} -h${secret_local_mysql_host} ${secret_local_mysql_database}
}
sync_develop_dbfile(){
ssh ${secret_develop_user}@${secret_develop_host} mysqldump ${UTF8} -u${secret_develop_mysql_user} -p${secret_develop_mysql_pw} -h${secret_develop_mysql_host} ${secret_develop_mysql_database} > ${secret_develop_mysql_database}.sql
}
print_develop_sql(){
echo "Develop Mysqldump:"
printf ${ORANGE}
echo "mysqldump ${UTF8} -u${secret_develop_mysql_user} -p${secret_develop_mysql_pw} -h${secret_develop_mysql_host} ${secret_develop_mysql_database} > ${secret_develop_mysql_database}.sql"
echo
printf ${NC}
}
sync_master_db_files(){
ssh ${secret_master_user}@${secret_master_host} mysqldump ${UTF8} -u${secret_master_mysql_user} -p${secret_master_mysql_pw} -h${secret_master_mysql_host} ${secret_master_mysql_database} | mysql ${UTF8} -p${secret_local_mysql_pw} -u${secret_local_mysql_user} -h${secret_local_mysql_host} ${secret_local_mysql_database}
rsync -avz --exclude '_processed_' $secret_master_user@$secret_master_host:$secret_master_path/fileadmin ${secret_local_webroot}/
rsync -avz --exclude '_processed_' $secret_master_user@$secret_master_host:$secret_master_path/uploads ${secret_local_webroot}/
}
sync_master_db(){
ssh ${secret_master_user}@${secret_master_host} mysqldump ${UTF8} -u${secret_master_mysql_user} -p${secret_master_mysql_pw} -h${secret_master_mysql_host} ${secret_master_mysql_database} | mysql ${UTF8} -p${secret_local_mysql_pw} -u${secret_local_mysql_user} -h${secret_local_mysql_host} ${secret_local_mysql_database}
}
sync_master_dbfile(){
ssh ${secret_master_user}@${secret_master_host} mysqldump ${UTF8} -u${secret_master_mysql_user} -p${secret_master_mysql_pw} -h${secret_master_mysql_host} ${secret_master_mysql_database} > ${secret_master_mysql_database}.sql
}
print_master_sql(){
echo "Master Mysqldump:"
printf ${ORANGE}
echo "mysqldump ${UTF8} -u${secret_master_mysql_user} -p${secret_master_mysql_pw} -h${secret_master_mysql_host} ${secret_master_mysql_database} > ${secret_master_mysql_database}.sql"
echo
printf ${NC}
}
backup_local_db(){
mysqldump ${UTF8} -p${secret_local_mysql_pw} -u${secret_local_mysql_user} -h${secret_local_mysql_host} ${secret_local_mysql_database} > ${secret_local_mysql_database}.sql
}
printf ${ORANGE}
echo "======================="
echo "T3 Sync - Please Select"
echo "======================="
printf ${NC}
COLUMNS=10
PS3='Please enter your choice: '
options=(
"Develop:: Sync (DB and Files)"
"Develop:: Sync (DB only)"
"Develop:: Get (DB as File)"
"Develop:: Print (Mysql Export query)"
"Master:: Sync (DB and Files)"
"Master:: Sync (DB only)"
"Master:: Get (DB as File)"
"Master:: Print (Mysql Export query)"
"Local:: Export (DB only)"
"Quit"
)
select opt in "${options[@]}"
do
case $opt in
"Develop:: Sync (DB and Files)")
sync_develop_db_files
exit
;;
"Develop:: Sync (DB only)")
sync_develop_db
exit
;;
"Develop:: Get (DB as File)")
sync_develop_dbfile
exit
;;
"Develop:: Print (Mysql Export query)")
print_develop_sql
exit
;;
"Master:: Sync (DB and Files)")
sync_master_db_files
exit
;;
"Master:: Sync (DB only)")
sync_master_db
exit
;;
"Master:: Get (DB as File)")
sync_master_dbfile
exit
;;
"Master:: Print (Mysql Export query)")
print_master_sql
exit
;;
"Local:: Export (DB only)")
backup_local_db
exit
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done