borg2-backup.sh: add database type to the name of database dump.
This commit is contained in:
parent
20e9b3b8d4
commit
f3b0bcd7bb
171
borg2-backup.sh
171
borg2-backup.sh
@ -140,6 +140,14 @@ echo_wait(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## - Check if a given array (parameter 2) contains a given string (parameter 1)
|
||||||
|
## -
|
||||||
|
containsElement () {
|
||||||
|
local e
|
||||||
|
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
trim() {
|
trim() {
|
||||||
local var="$*"
|
local var="$*"
|
||||||
var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
|
var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
|
||||||
@ -166,20 +174,6 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# ==========
|
|
||||||
# - Begin Main Script
|
|
||||||
# ==========
|
|
||||||
|
|
||||||
# ----------
|
|
||||||
# - Headline
|
|
||||||
# ----------
|
|
||||||
|
|
||||||
if $terminal ; then
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# ==========
|
# ==========
|
||||||
# - Begin Main Script
|
# - Begin Main Script
|
||||||
# ==========
|
# ==========
|
||||||
@ -313,14 +307,27 @@ BORG_LOG_FILE="${BORG_LOG_DIR}/borg-backup.log"
|
|||||||
|
|
||||||
if [[ -z "${DB_TYPE}" ]] ; then
|
if [[ -z "${DB_TYPE}" ]] ; then
|
||||||
DB_TYPE="${DEFAULT_DB_TYPE}"
|
DB_TYPE="${DEFAULT_DB_TYPE}"
|
||||||
elif [[ "${DB_TYPE,,}" = "mysql" ]] ; then
|
else
|
||||||
|
# replace comma by blank sign
|
||||||
|
DB_TYPE=${DB_TYPE/,/ }
|
||||||
|
fi
|
||||||
|
|
||||||
|
declare -a db_type_arr=()
|
||||||
|
|
||||||
|
for _db_type in ${DB_TYPE}; do
|
||||||
|
if [[ "${DB_TYPE,,}" = "psql" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "postgres" ]] ; then
|
||||||
|
db_type_arr+=("postgresql")
|
||||||
|
else
|
||||||
|
db_type_arr+=("${_db_type,,}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if containsElement "mysql" "${db_type_arr[@]}" ; then
|
||||||
[[ -z "${MYSQL_CREDENTIALS}" ]] && MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}"
|
[[ -z "${MYSQL_CREDENTIALS}" ]] && MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}"
|
||||||
elif [[ "${DB_TYPE,,}" = "psql" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "postgres" ]] ; then
|
fi
|
||||||
|
|
||||||
|
if containsElement "postgresql" "${db_type_arr[@]}" ; then
|
||||||
[[ -z "${PSQL_SYSTEM_USER}" ]] && PSQL_SYSTEM_USER="${DEFAULT_PSQL_SYSTEM_USER}"
|
[[ -z "${PSQL_SYSTEM_USER}" ]] && PSQL_SYSTEM_USER="${DEFAULT_PSQL_SYSTEM_USER}"
|
||||||
elif [[ "${DB_TYPE,,}" = "none" ]] ; then
|
|
||||||
DB_TYPE="None"
|
|
||||||
else
|
|
||||||
fatal "Unknown DB_TYPE '${DB_TYPE}'."
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -366,6 +373,37 @@ export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
|
|||||||
export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes
|
export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes
|
||||||
|
|
||||||
|
|
||||||
|
if $terminal ; then
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m----------\033[m"
|
||||||
|
echo -e " \033[32mScript parameter settings:.. \033[m"
|
||||||
|
echo -e " \033[1m----------\033[m"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
|
||||||
|
echo -e " BORG_HOST................: \033[33m${BORG_HOST}\033[m"
|
||||||
|
echo -e " BORG_REPO................: \033[33m${BORG_REPO}\033[m"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e " DB_TYPE(s)...............: \033[33m${DB_TYPE}\033[m"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
|
||||||
|
declare -i index=0
|
||||||
|
for _dir in ${BACKUP_DIRECTORIES} ; do
|
||||||
|
if [[ $index -lt 1 ]] ; then
|
||||||
|
echo -e " BACKUP_DIRECTORIES.......: \033[33m${_dir}\033[m"
|
||||||
|
else
|
||||||
|
echo -e " \033[33m${_dir}\033[m"
|
||||||
|
fi
|
||||||
|
(( index++ ))
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ ! -d "${BORG_LOG_DIR}" ]; then
|
if [ ! -d "${BORG_LOG_DIR}" ]; then
|
||||||
echononl "Create borg log directory.."
|
echononl "Create borg log directory.."
|
||||||
mkdir -p "${BORG_LOG_DIR}" > ${log_file} 2>&1
|
mkdir -p "${BORG_LOG_DIR}" > ${log_file} 2>&1
|
||||||
@ -401,7 +439,7 @@ fi
|
|||||||
echo "# ----------" >> ${BORG_LOG_FILE}
|
echo "# ----------" >> ${BORG_LOG_FILE}
|
||||||
echo -e "# Running script '${script_name}' on $(date +%Y.%m.%d) at $(date +%H:%M) h .." >> ${BORG_LOG_FILE}
|
echo -e "# Running script '${script_name}' on $(date +%Y.%m.%d) at $(date +%H:%M) h .." >> ${BORG_LOG_FILE}
|
||||||
echo "# ----------" >> ${BORG_LOG_FILE}
|
echo "# ----------" >> ${BORG_LOG_FILE}
|
||||||
|
|
||||||
|
|
||||||
echo "" >> ${BORG_LOG_FILE}
|
echo "" >> ${BORG_LOG_FILE}
|
||||||
echo "# Script parameter settings:" >> ${BORG_LOG_FILE}
|
echo "# Script parameter settings:" >> ${BORG_LOG_FILE}
|
||||||
@ -424,16 +462,26 @@ echo "COMPANY=\"${COMPANY}\"" >> ${BORG_LOG_FILE}
|
|||||||
echo "FROM_ADDRESS=\"${FROM_ADDRESS}\"" >> ${BORG_LOG_FILE}
|
echo "FROM_ADDRESS=\"${FROM_ADDRESS}\"" >> ${BORG_LOG_FILE}
|
||||||
echo "" >> ${BORG_LOG_FILE}
|
echo "" >> ${BORG_LOG_FILE}
|
||||||
|
|
||||||
if [[ -n "${DB_TYPE}" ]] && [[ "${DB_TYPE,,}" = "!none" ]]; then
|
if [[ -n "${DB_TYPE}" ]] && [[ ! "${DB_TYPE,,}" = "none" ]]; then
|
||||||
echo "" >> ${BORG_LOG_FILE}
|
echo "" >> ${BORG_LOG_FILE}
|
||||||
echo "# ---" >> ${BORG_LOG_FILE}
|
echo "# ---" >> ${BORG_LOG_FILE}
|
||||||
echo "# Create database backup .." >> ${BORG_LOG_FILE}
|
echo "# Create database backup .." >> ${BORG_LOG_FILE}
|
||||||
echo "# ---" >> ${BORG_LOG_FILE}
|
echo "# ---" >> ${BORG_LOG_FILE}
|
||||||
|
|
||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
|
if $terminal ; then
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo -e " \033[32mCreate (local) database backup(s).. \033[m"
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${DB_TYPE,,}" = "mysql" ]] ; then
|
if containsElement "mysql" "${db_type_arr[@]}" ; then
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
echononl "Create an array of MySQL databases."
|
echononl "Create an array of MySQL databases."
|
||||||
|
|
||||||
@ -472,20 +520,20 @@ EOF
|
|||||||
|
|
||||||
for _db in ${mysql_database_arr[@]} ; do
|
for _db in ${mysql_database_arr[@]} ; do
|
||||||
|
|
||||||
echononl "Dump Database '${_db}'.."
|
echononl " Dump MySQL Database '${_db}'.."
|
||||||
|
|
||||||
cat <<EOF >> ${BORG_LOG_FILE}
|
cat <<EOF >> ${BORG_LOG_FILE}
|
||||||
mysqldump ${MYSQL_CREDENTIALS} \\
|
mysqldump ${MYSQL_CREDENTIALS} \\
|
||||||
--single-transaction --routines \\
|
--single-transaction --routines \\
|
||||||
-h localhost \\
|
-h localhost \\
|
||||||
-e ${_db} > ${DB_BACKUP_DIR}/${_db}-${backup_date}.sql
|
-e ${_db} > ${DB_BACKUP_DIR}/${_db}-mysql-${backup_date}.sql
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
mysqldump $MYSQL_CREDENTIALS \
|
mysqldump $MYSQL_CREDENTIALS \
|
||||||
--single-transaction --routines \
|
--single-transaction --routines \
|
||||||
-h localhost \
|
-h localhost \
|
||||||
-e ${_db} > ${DB_BACKUP_DIR}/${_db}-${backup_date}.sql 2> ${log_file}
|
-e ${_db} > ${DB_BACKUP_DIR}/${_db}-mysql-${backup_date}.sql 2> ${log_file}
|
||||||
|
|
||||||
if [[ -s "${log_file}" ]] ; then
|
if [[ -s "${log_file}" ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
@ -495,8 +543,11 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
elif [[ "${DB_TYPE,,}" = "psql" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "postgres" ]] ; then
|
if containsElement "postgresql" "${db_type_arr[@]}" ; then
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
echononl "Create an array of PostgreSQL databases."
|
echononl "Create an array of PostgreSQL databases."
|
||||||
|
|
||||||
@ -537,13 +588,13 @@ EOF
|
|||||||
|
|
||||||
for _db in ${psql_database_arr[@]} ; do
|
for _db in ${psql_database_arr[@]} ; do
|
||||||
|
|
||||||
echononl "Dump Database '${_db}'.."
|
echononl " Dump PostgreSQL Database '${_db}'.."
|
||||||
|
|
||||||
cat <<EOF >> ${BORG_LOG_FILE}
|
cat <<EOF >> ${BORG_LOG_FILE}
|
||||||
su - ${PSQL_SYSTEM_USER} -c "pg_dump -c ${_db}" > ${DB_BACKUP_DIR}/${_db}-${backup_date}.sql
|
su - ${PSQL_SYSTEM_USER} -c "pg_dump -c ${_db}" > ${DB_BACKUP_DIR}/${_db}-psql-${backup_date}.sql
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
su - ${PSQL_SYSTEM_USER} -c "pg_dump -c ${_db}" > ${DB_BACKUP_DIR}/${_db}-${backup_date}.sql 2> ${log_file}
|
su - ${PSQL_SYSTEM_USER} -c "pg_dump -c ${_db}" > ${DB_BACKUP_DIR}/${_db}-psql-${backup_date}.sql 2> ${log_file}
|
||||||
|
|
||||||
if [[ -s "${log_file}" ]] ; then
|
if [[ -s "${log_file}" ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
@ -557,6 +608,16 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
if $terminal ; then
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo -e " \033[32mMain part of script - Create Borg2 backup(s).. \033[m"
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
echononl "Create borg backup.."
|
echononl "Create borg backup.."
|
||||||
|
|
||||||
cat << EOF >> ${BORG_LOG_FILE}
|
cat << EOF >> ${BORG_LOG_FILE}
|
||||||
@ -648,7 +709,6 @@ else
|
|||||||
cat ${log_file} >> ${BORG_LOG_FILE}
|
cat ${log_file} >> ${BORG_LOG_FILE}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echononl "Free repository space by deleting unused chunks..."
|
echononl "Free repository space by deleting unused chunks..."
|
||||||
|
|
||||||
cat << EOF >> ${BORG_LOG_FILE}
|
cat << EOF >> ${BORG_LOG_FILE}
|
||||||
@ -675,21 +735,39 @@ fi
|
|||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
|
|
||||||
# Remove DB local backup
|
if [[ -n "${DB_TYPE}" ]] && [[ ! "${DB_TYPE,,}" = "none" ]]; then
|
||||||
#
|
echo "" >> ${BORG_LOG_FILE}
|
||||||
echononl "Remove local DB backups.."
|
echo "# ---" >> ${BORG_LOG_FILE}
|
||||||
|
echo "# Remove database backup .." >> ${BORG_LOG_FILE}
|
||||||
|
echo "# ---" >> ${BORG_LOG_FILE}
|
||||||
|
|
||||||
echo "rm -f ${DB_BACKUP_DIR}/*-${backup_date}.sql" >> ${BORG_LOG_FILE}
|
if $terminal ; then
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo -e " \033[32mSome post-script tasks ... \033[m"
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
rm -f ${DB_BACKUP_DIR}/*-${backup_date}.sql > ${log_file} 2>&1
|
# Remove DB local backup
|
||||||
|
#
|
||||||
|
echononl "Remove local DB backups.."
|
||||||
|
|
||||||
|
echo "rm -f ${DB_BACKUP_DIR}/*-${backup_date}.sql" >> ${BORG_LOG_FILE}
|
||||||
|
|
||||||
|
rm -f ${DB_BACKUP_DIR}/*-${backup_date}.sql > ${log_file} 2>&1
|
||||||
|
|
||||||
|
if [[ $? -gt 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "${log_file}")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
|
||||||
echo_failed
|
|
||||||
error "$(cat "${log_file}")"
|
|
||||||
else
|
|
||||||
echo_ok
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Duration of backup
|
# Duration of backup
|
||||||
endTime=$(date +%s)
|
endTime=$(date +%s)
|
||||||
endDateReadable=$(date --date @"$endTime" +"%d.%m.%Y - %H:%M:%S")
|
endDateReadable=$(date --date @"$endTime" +"%d.%m.%Y - %H:%M:%S")
|
||||||
@ -701,8 +779,6 @@ durationReadable=$(printf "%02d hours %02d minutes %02d seconds" $durationHour $
|
|||||||
|
|
||||||
echo -e "\n\n###### Server backup finished on ${endDateReadable} (${durationReadable}) ######\n" >> ${BORG_LOG_FILE}
|
echo -e "\n\n###### Server backup finished on ${endDateReadable} (${durationReadable}) ######\n" >> ${BORG_LOG_FILE}
|
||||||
|
|
||||||
blank_line
|
|
||||||
|
|
||||||
|
|
||||||
# Error Handling
|
# Error Handling
|
||||||
#
|
#
|
||||||
@ -793,12 +869,17 @@ if [ $error -gt 0 -o $warning -gt 0 ] ; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
blank_line
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
|
if $terminal ; then
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo -e " \033[32mLog-File handling ... \033[m"
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
echononl "Create temporary logorotate configuration file 'logrotate_borg.conf'.."
|
echononl "Create temporary logorotate configuration file 'logrotate_borg.conf'.."
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user