Skip to content

Commit 87a8035

Browse files
authored
Merge pull request #269 from tiredofit/4.x
New Restore Script
2 parents 4a3a79d + c6a8fb0 commit 87a8035

File tree

2 files changed

+492
-316
lines changed

2 files changed

+492
-316
lines changed

install/assets/functions/10-db-backup

Lines changed: 83 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ bootstrap_variables() {
5151
DEFAULT_ENCRYPT_PUBKEY \
5252
DEFAULT_MONGO_CUSTOM_URI \
5353
DEFAULT_MYSQL_TLS_CA_FILE \
54-
DEFAULT_MYSQL_TLS_backup_job_filenameCERT_FILE \
54+
DEFAULT_MYSQL_TLS_CERT_FILE \
5555
DEFAULT_MYSQL_TLS_KEY_FILE \
5656
DEFAULT_S3_BUCKET \
5757
DEFAULT_S3_KEY_ID \
@@ -240,18 +240,73 @@ bootstrap_variables() {
240240
rm -rf "${backup_instance_vars}"
241241
}
242242

243-
upgrade_lonely_variables() {
244-
upgrade_lonely_variables_tmp=$(mktemp)
245-
set -o posix; set | grep "^$1" | grep -v "^$1[0-9]._" > "${upgrade_lonely_variables_tmp}"
246-
while read -r exist_var ; do
247-
if [ ! -v "${1}"01_"$(echo "${exist_var}" | cut -d = -f1 | cut -d _ -f2)" ] ; then
248-
export "${1}"01_"$(echo "${exist_var}" | cut -d = -f1 | cut -d _ -f2-9)"="$(echo "${exist_var}" | cut -d = -f2)"
249-
else
250-
print_error "Variable ${1}01_$(echo "${exist_var}" | cut -d = -f1 | cut -d _ -f2) already exists, fix your variables and start again.."
251-
exit 1
252-
fi
253-
done < "${upgrade_lonely_variables_tmp}"
254-
rm -rf "${upgrade_lonely_variables_tmp}"
243+
restore_init() {
244+
restore_vars=$(mktemp)
245+
set -o posix ; set | grep -oE "^restore_job_.*=" | grep -oE ".*=" | sed "/--/d" > "${restore_vars}"
246+
while read -r restore_var ; do
247+
unset "$(echo "${restore_var}" | cut -d = -f 1)"
248+
done < "${restore_vars}"
249+
250+
if [ -n "${DB_NAME}" ] && [ -z "${DB01_NAME}" ] ; then export DB01_NAME="${DB_NAME}" ; unset DB_NAME ; fi
251+
if [ -n "${DB_USER}" ] && [ -z "${DB01_USER}" ] ; then export DB01_USER="${DB_USER}" ; unset DB_USER ; fi
252+
if [ -n "${DB_PASS}" ] && [ -z "${DB01_PASS}" ] ; then export DB01_PASS="${DB_PASS}" ; unset DB_PASS ; fi
253+
if [ -n "${DB_TYPE}" ] && [ -z "${DB01_TYPE}" ] ; then export DB01_TYPE="${DB_TYPE}" ; unset DB_TYPE ; fi
254+
if [ -n "${DB_PORT}" ] && [ -z "${DB01_PORT}" ] ; then export DB01_PORT="${DB_PORT}" ; unset DB_PORT ; fi
255+
if [ -n "${DB_HOST}" ] && [ -z "${DB01_HOST}" ] ; then export DB01_HOST="${DB_HOST}" ; unset DB_HOST ; fi
256+
if [ -n "${DB_AUTH}" ] && [ -z "${DB01_AUTH}" ] ; then export DB01_AUTH="${DB_AUTH}" ; unset DB_AUTH ; fi
257+
if [ -n "${MONGO_CUSTOM_URI}" ] && [ -z "${DB01_MONGO_CUSTOM_URI}" ] ; then export DB01_MONGO_CUSTOM_URI="${DB_MONGO_CUSTOM_URI}" ; unset MONGO_CUSTOM_URI ; fi
258+
if [ -n "${MYSQL_TLS_CA_FILE}" ] && [ -z "${DB01_MYSQL_TLS_CA_FILE}" ] ; then export DB01_MYSQL_TLS_CA_FILE="${MYSQL_TLS_CA_FILE}" ; unset MYSQL_TLS_CA_FILE ; fi
259+
if [ -n "${MYSQL_TLS_CERT_FILE}" ] && [ -z "${DB01_MYSQL_TLS_CERT_FILE}" ] ; then export DB01_MYSQL_TLS_CERT_FILE="${MYSQL_TLS_CERT_FILE}" ; unset MYSQL_TLS_CERT_FILE ; fi
260+
if [ -n "${MYSQL_TLS_KEY_FILE}" ] && [ -z "${DB01_MYSQL_TLS_KEY_FILE}" ] ; then export DB01_MYSQL_TLS_KEY_FILE="${MYSQL_TLS_KEY_FILE}" ; unset MYSQL_TLS_KEY_FILE ; fi
261+
262+
transform_file_var \
263+
DEFAULT_AUTH \
264+
DEFAULT_HOST \
265+
DEFAULT_NAME \
266+
DEFAULT_PASS \
267+
DEFAULT_PORT \
268+
DEFAULT_TYPE \
269+
DEFAULT_USER \
270+
DEFAULT_MONGO_CUSTOM_URI \
271+
DEFAULT_MYSQL_TLS_CA_FILE \
272+
DEFAULT_MYSQL_TLS_CERT_FILE \
273+
DEFAULT_MYSQL_TLS_KEY_FILE
274+
275+
set -o posix ; set | grep -E "^DEFAULT_" > "${restore_vars}"
276+
277+
restore_instances=$(printenv | sort | grep -c '^DB.*_HOST')
278+
279+
for (( restore_instance_number = 01; restore_instance_number <= restore_instances; restore_instance_number++ )) ; do
280+
restore_instance_number=$(printf "%02d" $restore_instance_number)
281+
transform_file_var \
282+
DB"${restore_instance_number}"_AUTH \
283+
DB"${restore_instance_number}"_HOST \
284+
DB"${restore_instance_number}"_NAME \
285+
DB"${restore_instance_number}"_PASS \
286+
DB"${restore_instance_number}"_PORT \
287+
DB"${restore_instance_number}"_TYPE \
288+
DB"${restore_instance_number}"_USER \
289+
DB"${restore_instance_number}"_MONGO_CUSTOM_URI \
290+
DB"${restore_instance_number}"_MYSQL_TLS_CA_FILE \
291+
DB"${restore_instance_number}"_MYSQL_TLS_CERT_FILE \
292+
DB"${restore_instance_number}"_MYSQL_TLS_KEY_FILE
293+
294+
set -o posix ; set | grep -E "^DB${restore_instance_number}_" >> "${restore_vars}"
295+
done
296+
297+
if [ -n "${DB_DUMP_TARGET}" ]; then
298+
print_warn "Deprecated and unsupported variable 'DB_DUMP_TARGET' detected - Please upgrade your variables as they will be removed in version 4.3.0"
299+
sed -i "/DEFAULT_FILESYSTEM_PATH=/d" "${restore_vars}"
300+
echo "DEFAULT_FILESYSTEM_PATH=${DB_DUMP_TARGET}" >> "${restore_vars}"
301+
fi
302+
303+
if [ -n "${DB_DUMP_TARGET_ARCHIVE}" ]; then
304+
print_warn "Deprecated and unsupported variable 'DB_DUMP_TARGET_ACRHIVE' detected - Please upgrade your variables as they will be removed in version 4.3.0"
305+
sed -i "/DEFAULT_FILESYSTEM_ARCHIVE_PATH=/d" "${restore_vars}"
306+
echo "DEFAULT_FILESYSTEM_ARCHIVE_PATH=${DB_DUMP_TARGET_ARCHIVE}" >> "${restore_vars}"
307+
fi
308+
309+
echo "RESTORE_VARS is ${restore_vars}"
255310
}
256311

257312
parse_variables() {
@@ -368,9 +423,24 @@ bootstrap_variables() {
368423
if var_true "${backup_job_resource_optimized}" ; then play_fair="nice -19 ionice -c2" ; fi
369424
}
370425

426+
upgrade_lonely_variables() {
427+
upgrade_lonely_variables_tmp=$(mktemp)
428+
set -o posix; set | grep "^$1" | grep -v "^$1[0-9]._" > "${upgrade_lonely_variables_tmp}"
429+
while read -r exist_var ; do
430+
if [ ! -v "${1}"01_"$(echo "${exist_var}" | cut -d = -f1 | cut -d _ -f2)" ] ; then
431+
export "${1}"01_"$(echo "${exist_var}" | cut -d = -f1 | cut -d _ -f2-9)"="$(echo "${exist_var}" | cut -d = -f2)"
432+
else
433+
print_error "Variable ${1}01_$(echo "${exist_var}" | cut -d = -f1 | cut -d _ -f2) already exists, fix your variables and start again.."
434+
exit 1
435+
fi
436+
done < "${upgrade_lonely_variables_tmp}"
437+
rm -rf "${upgrade_lonely_variables_tmp}"
438+
}
439+
371440
case "${1}" in
372441
backup_init ) backup_init "$2" ;;
373442
parse_variables) parse_variables "$2" ;;
443+
restore_init) restore_init ;;
374444
upgrade ) upgrade_lonely_variables "$2" ;;
375445
esac
376446

0 commit comments

Comments
 (0)