Compare commits
18 Commits
20355bacae
...
main
Author | SHA1 | Date | |
---|---|---|---|
19a87f86fd | |||
1b3af2ff9e | |||
bd20e94482 | |||
39ad77b374 | |||
23bd6ffc12 | |||
dc8a847990 | |||
079fd850e6 | |||
70bcd54cea | |||
c4b330c23c | |||
d2271af621 | |||
06217a3b93 | |||
abb4f675e0 | |||
b2d543a290 | |||
a5a53298b2 | |||
f3b0bcd7bb | |||
20e9b3b8d4 | |||
dd072f69af | |||
3b1dd2d30f |
@ -210,6 +210,10 @@ DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
|
|||||||
|
|
||||||
DEFAULT_NC_DB_BACKUP_DIR="/data/backup/sql"
|
DEFAULT_NC_DB_BACKUP_DIR="/data/backup/sql"
|
||||||
|
|
||||||
|
DEFAULT_MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
||||||
|
DEFAULT_MYSQL_PERFORMANCE_SETTINGS=false
|
||||||
|
DEFAULT_MYSQL_MAX_ALLOWED_PACKET="512M"
|
||||||
|
|
||||||
DEFAULT_BACKUP_OTHER_DIRECTORIES="/etc /home /root /var/spool/cron"
|
DEFAULT_BACKUP_OTHER_DIRECTORIES="/etc /home /root /var/spool/cron"
|
||||||
|
|
||||||
DEFAULT_KEEP_DAILY=10
|
DEFAULT_KEEP_DAILY=10
|
||||||
@ -233,15 +237,18 @@ else
|
|||||||
fatal "No configuration file '$conf_file' present!"
|
fatal "No configuration file '$conf_file' present!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[[ -z "${ADMIN_EMAIL}" ]] && ADMIN_EMAIL="${DEFAULT_ADMIN_EMAIL}"
|
||||||
|
[[ -z "${COMPANY}" ]] && COMPANY="${DEFAULT_COMPANY}"
|
||||||
|
[[ -z "${FROM_ADDRESS}" ]] && FROM_ADDRESS="${DEFAULT_FROM_ADDRESS}"
|
||||||
|
|
||||||
|
[[ -z "${MYSQL_CREDENTIALS}" ]] && MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}"
|
||||||
|
[[ -z "${MYSQL_PERFORMANCE_SETTINGS}" ]] && MYSQL_PERFORMANCE_SETTINGS=${DEFAULT_MYSQL_PERFORMANCE_SETTINGS}
|
||||||
|
[[ -z "$MYSQL_MAX_ALLOWED_PACKET" ]] && MYSQL_MAX_ALLOWED_PACKET="${DEFAULT_MYSQL_MAX_ALLOWED_PACKET}"
|
||||||
|
|
||||||
# -------------
|
# -------------
|
||||||
# - Job is already running?
|
# - Job is already running?
|
||||||
# -------------
|
# -------------
|
||||||
|
|
||||||
[[ -z "${ADMIN_EMAIL}" ]] && ADMIN_EMAIL="${DEFAULT_ADMIN_EMAIL}"
|
|
||||||
[[ -z "${COMPANY}" ]] && COMPANY="${DEFAULT_COMPANY}"
|
|
||||||
[[ -z "${FROM_ADDRESS}" ]] && FROM_ADDRESS="${DEFAULT_FROM_ADDRESS}"
|
|
||||||
|
|
||||||
# - If job already runs, stop execution..
|
# - If job already runs, stop execution..
|
||||||
# -
|
# -
|
||||||
if mkdir "$LOCK_DIR" 2> /dev/null ; then
|
if mkdir "$LOCK_DIR" 2> /dev/null ; then
|
||||||
@ -336,7 +343,11 @@ done
|
|||||||
#
|
#
|
||||||
BORG_BACKUP_DIRS="${BORG_BACKUP_DIRS#"${BORG_BACKUP_DIRS%%[![:space:]]*}"}"
|
BORG_BACKUP_DIRS="${BORG_BACKUP_DIRS#"${BORG_BACKUP_DIRS%%[![:space:]]*}"}"
|
||||||
|
|
||||||
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
if [[ "${BORG_HOST,,}" == "localhost" ]] ; then
|
||||||
|
BORG_URL="file://${BORG_REPO}"
|
||||||
|
else
|
||||||
|
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
||||||
|
fi
|
||||||
|
|
||||||
#BORG_REPO="${BORG_URL}"
|
#BORG_REPO="${BORG_URL}"
|
||||||
|
|
||||||
@ -541,23 +552,143 @@ fi
|
|||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
|
|
||||||
|
if ${MYSQL_PERFORMANCE_SETTINGS}; then
|
||||||
|
|
||||||
|
# - GET current (global) Autocommit value
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1mautocommit\033[m"
|
||||||
|
CUR_AUTOCOMMIT="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'autocommit'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'foreign_key_checks'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1mforeign_key_checks\033[m"
|
||||||
|
CUR_FOREIGN_KEY_CHECKS="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'foreign_key_checks'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'unique_checks'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1munique_checks\033[m"
|
||||||
|
CUR_UNIQUE_CHECKS="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'unique_checks'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'innodb_flush_log_at_trx_commit'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1minnodb_flush_log_at_trx_commit\033[m"
|
||||||
|
CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log_at_trx_commit'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'max_allowed_packet'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1mmax_allowed_packet\033[m"
|
||||||
|
CUR_MAX_ALLOWED_PACKET="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
echononl "Set Autocommit to OFF"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL autocommit='OFF'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set foreign_key_checks to OFF"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL foreign_key_checks='OFF'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set unique_checks to OFF"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL unique_checks='OFF'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set innodb_flush_log_at_trx_commit to 2"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL innodb_flush_log_at_trx_commit=2" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set max_allowed_packet to 1G"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL max_allowed_packet=1073741824" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Create database backup
|
# Create database backup
|
||||||
#
|
#
|
||||||
echononl "Create database backup .."
|
echononl "Create database backup .."
|
||||||
|
|
||||||
cat << EOF >> ${BORG_LOG_FILE}
|
cat << EOF >> ${BORG_LOG_FILE}
|
||||||
mysqldump --single-transaction --routines \\
|
mysqldump ${MYSQL_CREDENTIALS} \\
|
||||||
-h localhost \\
|
--single-transaction \\
|
||||||
-u${NC_DB_USER} \\
|
--max-allowed-packet=${MYSQL_MAX_ALLOWED_PACKET} \\
|
||||||
-p${NC_DB_PASS} \\
|
--routines \\
|
||||||
-e ${NC_DB} > ${NC_DB_BACKUP_DIR}/${NC_DB}-${backup_date}.sql
|
--triggers \\
|
||||||
|
--quick \\
|
||||||
|
--extended-insert ${NC_DB} > ${NC_DB_BACKUP_DIR}/${NC_DB}-${backup_date}.sql
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
mysqldump --single-transaction --routines \
|
mysqldump ${MYSQL_CREDENTIALS} \
|
||||||
-h localhost \
|
--single-transaction \
|
||||||
-u${NC_DB_USER} \
|
--max-allowed-packet=${MYSQL_MAX_ALLOWED_PACKET} \
|
||||||
-p${NC_DB_PASS} \
|
--routines \
|
||||||
-e ${NC_DB} > ${NC_DB_BACKUP_DIR}/${NC_DB}-${backup_date}.sql 2> ${log_file}
|
--triggers \
|
||||||
|
--quick \
|
||||||
|
--extended-insert ${NC_DB} > ${NC_DB_BACKUP_DIR}/${NC_DB}-${backup_date}.sql 2> ${log_file}
|
||||||
|
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
if [[ $? -gt 0 ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
@ -566,6 +697,65 @@ else
|
|||||||
echo_ok
|
echo_ok
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
|
||||||
|
if ${MYSQL_PERFORMANCE_SETTINGS}; then
|
||||||
|
|
||||||
|
echononl "Set Autocommit to $CUR_AUTOCOMMIT"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL autocommit='$CUR_AUTOCOMMIT'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_AUTOCOMMIT=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set foreign_key_checks to $CUR_FOREIGN_KEY_CHECKS"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL foreign_key_checks='$CUR_FOREIGN_KEY_CHECKS'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_FOREIGN_KEY_CHECKS=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set unique_checks to $CUR_UNIQUE_CHECKS"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL unique_checks='$CUR_UNIQUE_CHECKS'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_UNIQUE_CHECKS=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set innodb_flush_log_at_trx_commit to $CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL innodb_flush_log_at_trx_commit=$CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set max_allowed_packet to $CUR_MAX_ALLOWED_PACKET"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL max_allowed_packet=$CUR_MAX_ALLOWED_PACKET" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_MAX_ALLOWED_PACKET=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
echononl "Create borg backup.."
|
echononl "Create borg backup.."
|
||||||
|
|
||||||
@ -585,7 +775,13 @@ borg2 \\
|
|||||||
--exclude '/root/.cache/*' \\
|
--exclude '/root/.cache/*' \\
|
||||||
--exclude '/root/.config/*' \\
|
--exclude '/root/.config/*' \\
|
||||||
--exclude '/root/.local/*' \\
|
--exclude '/root/.local/*' \\
|
||||||
--exclude 'var/tmp/*' \\
|
--exclude '**/tmp/*' \\
|
||||||
|
--exclude '*.lock' \\
|
||||||
|
--exclude '*.log' \\
|
||||||
|
--exclude '*.log.[0-9]' \\
|
||||||
|
--exclude '*.log.[0-9]*.gz' \\
|
||||||
|
--exclude '**/sessions/*' \\
|
||||||
|
--exclude '**/*.20[2-3][0-9]-[0-1][0-9]*' \\
|
||||||
${ARCHIVE_NAME} \\
|
${ARCHIVE_NAME} \\
|
||||||
${NC_DB_BACKUP_DIR} \\
|
${NC_DB_BACKUP_DIR} \\
|
||||||
${BORG_NC_PATH} \\
|
${BORG_NC_PATH} \\
|
||||||
@ -608,7 +804,13 @@ borg2 \
|
|||||||
--exclude '/root/.cache/*' \
|
--exclude '/root/.cache/*' \
|
||||||
--exclude '/root/.config/*' \
|
--exclude '/root/.config/*' \
|
||||||
--exclude '/root/.local/*' \
|
--exclude '/root/.local/*' \
|
||||||
--exclude 'var/tmp/*' \
|
--exclude '**/tmp/*' \
|
||||||
|
--exclude '*.lock' \
|
||||||
|
--exclude '*.log' \
|
||||||
|
--exclude '*.log.[0-9]' \
|
||||||
|
--exclude '*.log.[0-9]*.gz' \
|
||||||
|
--exclude '**/sessions/*' \
|
||||||
|
--exclude '**/*.20[2-3][0-9]-[0-1][0-9]*' \
|
||||||
${ARCHIVE_NAME} \
|
${ARCHIVE_NAME} \
|
||||||
${NC_DB_BACKUP_DIR} \
|
${NC_DB_BACKUP_DIR} \
|
||||||
${BORG_NC_PATH} \
|
${BORG_NC_PATH} \
|
||||||
|
561
borg2-backup.sh
561
borg2-backup.sh
@ -8,6 +8,8 @@ conf_file="${working_dir}/conf/${script_name%%.*}.conf"
|
|||||||
LOCK_DIR="/tmp/${script_name%%.*}.LOCK"
|
LOCK_DIR="/tmp/${script_name%%.*}.LOCK"
|
||||||
log_file="${LOCK_DIR}/${script_name%%.*}.log"
|
log_file="${LOCK_DIR}/${script_name%%.*}.log"
|
||||||
|
|
||||||
|
#lock_file="${LOCK_DIR}/${script_name%%.*}.log"
|
||||||
|
|
||||||
backup_date="$(date +%Y-%m-%d-%H%M)"
|
backup_date="$(date +%Y-%m-%d-%H%M)"
|
||||||
|
|
||||||
startTime=$(date +%s)
|
startTime=$(date +%s)
|
||||||
@ -140,6 +142,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 +176,6 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# ==========
|
|
||||||
# - Begin Main Script
|
|
||||||
# ==========
|
|
||||||
|
|
||||||
# ----------
|
|
||||||
# - Headline
|
|
||||||
# ----------
|
|
||||||
|
|
||||||
if $terminal ; then
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# ==========
|
# ==========
|
||||||
# - Begin Main Script
|
# - Begin Main Script
|
||||||
# ==========
|
# ==========
|
||||||
@ -200,7 +196,7 @@ fi
|
|||||||
# Default values
|
# Default values
|
||||||
# ----------
|
# ----------
|
||||||
|
|
||||||
DEFAULT_BORG_LOG_DIR="/var/log/borg/"
|
DEFAULT_BORG_LOG_DIR="/var/log/borg"
|
||||||
|
|
||||||
DEFAULT_SSH_USER="borg"
|
DEFAULT_SSH_USER="borg"
|
||||||
DEFAULT_SSH_PORT=22
|
DEFAULT_SSH_PORT=22
|
||||||
@ -209,6 +205,7 @@ DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
|
|||||||
DEFAULT_DB_BACKUP_DIR="/data/backup/sql"
|
DEFAULT_DB_BACKUP_DIR="/data/backup/sql"
|
||||||
|
|
||||||
DEFAULT_BACKUP_DIRECTORIES="/etc /home /root /var/spool/cron"
|
DEFAULT_BACKUP_DIRECTORIES="/etc /home /root /var/spool/cron"
|
||||||
|
MOUNT_NETDIR=false
|
||||||
|
|
||||||
DEFAULT_KEEP_DAILY=10
|
DEFAULT_KEEP_DAILY=10
|
||||||
DEFAULT_KEEP_WEEKLY=5
|
DEFAULT_KEEP_WEEKLY=5
|
||||||
@ -216,7 +213,9 @@ DEFAULT_KEEP_MONTHLY=6
|
|||||||
DEFAULT_KEEP_YEARLY=1
|
DEFAULT_KEEP_YEARLY=1
|
||||||
|
|
||||||
DEFAULT_DB_TYPE="None"
|
DEFAULT_DB_TYPE="None"
|
||||||
|
|
||||||
DEFAULT_MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
DEFAULT_MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
||||||
|
DEFAULT_MYSQL_PERFORMANCE_SETTINGS=false
|
||||||
|
|
||||||
DEFAULT_PSQL_SYSTEM_USER="postgres"
|
DEFAULT_PSQL_SYSTEM_USER="postgres"
|
||||||
|
|
||||||
@ -313,20 +312,36 @@ 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
|
|
||||||
[[ -z "${MYSQL_CREDENTIALS}" ]] && MYSQL_CREDENTIALS="${DEFAULT_MYSQL_CREDENTIALS}"
|
|
||||||
elif [[ "${DB_TYPE,,}" = "psql" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "postgres" ]] ; then
|
|
||||||
[[ -z "${PSQL_SYSTEM_USER}" ]] && PSQL_SYSTEM_USER="${DEFAULT_PSQL_SYSTEM_USER}"
|
|
||||||
elif [[ "${DB_TYPE,,}" = "none" ]] ; then
|
|
||||||
DB_TYPE="None"
|
|
||||||
else
|
else
|
||||||
fatal "Unknown DB_TYPE '${DB_TYPE}'."
|
# 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_PERFORMANCE_SETTINGS}" ]] && MYSQL_PERFORMANCE_SETTINGS=${DEFAULT_MYSQL_PERFORMANCE_SETTINGS}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if containsElement "postgresql" "${db_type_arr[@]}" ; then
|
||||||
|
[[ -z "${PSQL_SYSTEM_USER}" ]] && PSQL_SYSTEM_USER="${DEFAULT_PSQL_SYSTEM_USER}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[[ -z "${BACKUP_DIRECTORIES}" ]] && BACKUP_DIRECTORIES="${DEFAULT_BACKUP_DIRECTORIES}"
|
[[ -z "${BACKUP_DIRECTORIES}" ]] && BACKUP_DIRECTORIES="${DEFAULT_BACKUP_DIRECTORIES}"
|
||||||
|
|
||||||
|
[[ -n "${BACKUP_NET_DIRECTORIES}" ]] && MOUNT_NETDIR=true
|
||||||
|
|
||||||
# By default: Borg won't follow symlinks
|
# By default: Borg won't follow symlinks
|
||||||
#
|
#
|
||||||
BORG_BACKUP_DIRS=""
|
BORG_BACKUP_DIRS=""
|
||||||
@ -341,9 +356,13 @@ done
|
|||||||
#
|
#
|
||||||
BORG_BACKUP_DIRS="${BORG_BACKUP_DIRS#"${BORG_BACKUP_DIRS%%[![:space:]]*}"}"
|
BORG_BACKUP_DIRS="${BORG_BACKUP_DIRS#"${BORG_BACKUP_DIRS%%[![:space:]]*}"}"
|
||||||
|
|
||||||
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
if [[ "${BORG_HOST,,}" == "localhost" ]] ; then
|
||||||
|
BORG_URL="file://${BORG_REPO}"
|
||||||
|
else
|
||||||
|
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
||||||
|
fi
|
||||||
|
|
||||||
#BORG_REPO="${BORG_URL}"
|
export BORG_REPO="${BORG_URL}"
|
||||||
|
|
||||||
ARCHIVE_NAME="${backup_date}"
|
ARCHIVE_NAME="${backup_date}"
|
||||||
|
|
||||||
@ -366,6 +385,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
|
||||||
@ -423,17 +473,30 @@ echo "ADMIN_EMAIL=\"${ADMIN_EMAIL}\"" >> ${BORG_LOG_FILE}
|
|||||||
echo "COMPANY=\"${COMPANY}\"" >> ${BORG_LOG_FILE}
|
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}
|
||||||
|
echo "BORG_LOG_FILE=\"${BORG_LOG_FILE}\"" >> ${BORG_LOG_FILE}
|
||||||
|
echo "log_file=\"${log_file}\"" >> ${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."
|
||||||
|
|
||||||
@ -470,22 +533,142 @@ EOF
|
|||||||
echo_ok
|
echo_ok
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
if ${MYSQL_PERFORMANCE_SETTINGS} ; then
|
||||||
|
|
||||||
|
# - GET current (global) Autocommit value
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1mautocommit\033[m"
|
||||||
|
CUR_AUTOCOMMIT="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'autocommit'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'foreign_key_checks'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1mforeign_key_checks\033[m"
|
||||||
|
CUR_FOREIGN_KEY_CHECKS="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'foreign_key_checks'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'unique_checks'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1munique_checks\033[m"
|
||||||
|
CUR_UNIQUE_CHECKS="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'unique_checks'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'innodb_flush_log_at_trx_commit'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1minnodb_flush_log_at_trx_commit\033[m"
|
||||||
|
CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log_at_trx_commit'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# - GET current (global) value for 'max_allowed_packet'
|
||||||
|
# -
|
||||||
|
echononl "GET current (global) value \033[1mmax_allowed_packet\033[m"
|
||||||
|
CUR_MAX_ALLOWED_PACKET="$(mysql ${MYSQL_CREDENTIALS} -N -s -e "SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'" \
|
||||||
|
| awk '{print$2}')" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
echononl "Set Autocommit to OFF"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL autocommit='OFF'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set foreign_key_checks to OFF"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL foreign_key_checks='OFF'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set unique_checks to OFF"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL unique_checks='OFF'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set innodb_flush_log_at_trx_commit to 2"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL innodb_flush_log_at_trx_commit=2" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set max_allowed_packet to 1G"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL max_allowed_packet=1073741824" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
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 \\
|
||||||
-h localhost \\
|
--routines \\
|
||||||
-e ${_db} > ${DB_BACKUP_DIR}/${_db}-${backup_date}.sql
|
--triggers \\
|
||||||
|
--quick \\
|
||||||
|
--extended-insert ${_db} > ${DB_BACKUP_DIR}/${_db}-mysql-${backup_date}.sql
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
mysqldump $MYSQL_CREDENTIALS \
|
mysqldump $MYSQL_CREDENTIALS \
|
||||||
--single-transaction --routines \
|
--single-transaction \
|
||||||
-h localhost \
|
--routines \
|
||||||
-e ${_db} > ${DB_BACKUP_DIR}/${_db}-${backup_date}.sql 2> ${log_file}
|
--triggers \
|
||||||
|
--quick \
|
||||||
|
--extended-insert ${_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
|
||||||
@ -496,7 +679,66 @@ EOF
|
|||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
elif [[ "${DB_TYPE,,}" = "psql" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "postgres" ]] ; then
|
blank_line
|
||||||
|
|
||||||
|
if ${MYSQL_PERFORMANCE_SETTINGS} ; then
|
||||||
|
echononl "Set Autocommit to $CUR_AUTOCOMMIT"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL autocommit='$CUR_AUTOCOMMIT'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_AUTOCOMMIT=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set foreign_key_checks to $CUR_FOREIGN_KEY_CHECKS"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL foreign_key_checks='$CUR_FOREIGN_KEY_CHECKS'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_FOREIGN_KEY_CHECKS=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set unique_checks to $CUR_UNIQUE_CHECKS"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL unique_checks='$CUR_UNIQUE_CHECKS'" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_UNIQUE_CHECKS=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set innodb_flush_log_at_trx_commit to $CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL innodb_flush_log_at_trx_commit=$CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_INNODB_FLUSH_LOG_AT_TRX_COMMIT=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echononl "Set max_allowed_packet to $CUR_MAX_ALLOWED_PACKET"
|
||||||
|
mysql ${MYSQL_CREDENTIALS} -N -s -e "SET GLOBAL max_allowed_packet=$CUR_MAX_ALLOWED_PACKET" >> ${log_file} 2>&1
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
CUR_MAX_ALLOWED_PACKET=""
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
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 +779,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,12 +799,138 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
|
||||||
|
if $MOUNT_NETDIR ; then
|
||||||
|
|
||||||
|
if $terminal ; then
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo -e " \033[32mMount Network filesystems.. \033[m"
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
declare -i _net_dir_index=0
|
||||||
|
MOUNTED_NET_DIRECTORIES=""
|
||||||
|
|
||||||
|
for _net_dir in ${BACKUP_NET_DIRECTORIES} ; do
|
||||||
|
|
||||||
|
echononl "Mount network directory '${_net_dir}'.."
|
||||||
|
|
||||||
|
if ! $(df -h 2> /dev/null | grep -q ${_net_dir} 2>/dev/null) ; then
|
||||||
|
|
||||||
|
cat <<EOF >> ${BORG_LOG_FILE}
|
||||||
|
mount "${_net_dir}" > /dev/null 2> ${log_file}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mount "${_net_dir}" > /dev/null 2> ${log_file}
|
||||||
|
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
if [[ ${_net_dir_index} -lt 1 ]] ; then
|
||||||
|
MOUNTED_NET_DIRECTORIES="${_net_dir}"
|
||||||
|
else
|
||||||
|
MOUNTED_NET_DIRECTORIES="${MOUNTED_NET_DIRECTORIES} ${_net_dir}"
|
||||||
|
fi
|
||||||
|
(( _net_dir_index++ ))
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo_skipped
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
#echononl "Erstelle Lock Datei '$(basename "${lock_file}")' .."
|
||||||
|
#touch "${lock_file}" > "${log_file}"
|
||||||
|
#
|
||||||
|
#if [[ $? -gt 0 ]] ; then
|
||||||
|
# echo_failed
|
||||||
|
#else
|
||||||
|
# echo_ok
|
||||||
|
#fi
|
||||||
|
#
|
||||||
|
#echononl "Starte Hintergrundroutine - prüfe Existenz von borg2 lock dateien."
|
||||||
|
#(
|
||||||
|
# #echo "Lock-Watcher gestartet..."
|
||||||
|
#
|
||||||
|
# declare -i index=0
|
||||||
|
#
|
||||||
|
# # Solange die eigene Lockdatei existiert
|
||||||
|
# while [ -e "${lock_file}" ]; do
|
||||||
|
#
|
||||||
|
# # Nur vor dem 1. durchlauf warten..
|
||||||
|
# [[ ${index} -lt 1 ]] && sleep 10
|
||||||
|
#
|
||||||
|
# declare -i deleted_something=0
|
||||||
|
#
|
||||||
|
# # Zielpfade
|
||||||
|
# LOCK_DIR="/mnt/backup/BORG-2/file-ah/lock.exclusive/lock.exclusive"
|
||||||
|
# LOCK_FILE="/mnt/backup/BORG-2/file-ah/lock.roster"
|
||||||
|
#
|
||||||
|
# # Falls das Verzeichnis existiert, löschen
|
||||||
|
# if [ -d "$LOCK_DIR" ]; then
|
||||||
|
# #echo "Verzeichnis $LOCK_DIR gefunden - wird gelöscht..."
|
||||||
|
# rm -rf "$LOCK_DIR"
|
||||||
|
# deleted_something=1
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# # Falls die Datei existiert, löschen
|
||||||
|
# if [ -f "$LOCK_FILE" ]; then
|
||||||
|
# #echo "Datei $LOCK_FILE gefunden - wird gelöscht..."
|
||||||
|
# rm -f "$LOCK_FILE"
|
||||||
|
# deleted_something=1
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# # Wenn etwas gelöscht wurde: eigene Lockdatei löschen und abbrechen
|
||||||
|
# if [ "$deleted_something" -eq 1 ]; then
|
||||||
|
# if [ -e "${lock_file}" ]; then
|
||||||
|
# #echo "Eigene Lockdatei $MY_LOCKFILE wird gelöscht..."
|
||||||
|
# rm -f "${lock_file}"
|
||||||
|
# fi
|
||||||
|
# #echo "Lock-Watcher beendet Löschung erfolgt."
|
||||||
|
# exit 0
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# # Kurze Pause, um Systemlast zu minimieren (z.B. alle 5 Sekunden prüfen)
|
||||||
|
# sleep 20
|
||||||
|
#
|
||||||
|
# (( index++ ))
|
||||||
|
# done
|
||||||
|
#
|
||||||
|
# #echo "Lock-Watcher beendet Lockdatei $MY_LOCKFILE existiert nicht mehr."
|
||||||
|
#) &
|
||||||
|
#
|
||||||
|
#echo_done
|
||||||
|
#
|
||||||
|
#sleep 5
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#blank_line
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echononl "Create borg backup.."
|
echononl "Create borg backup.."
|
||||||
|
|
||||||
cat << EOF >> ${BORG_LOG_FILE}
|
cat << EOF >> ${BORG_LOG_FILE}
|
||||||
borg2 \\
|
borg2 \\
|
||||||
--remote-path borg2 \\
|
--remote-path borg2 \\
|
||||||
--repo ${BORG_URL} \\
|
|
||||||
create \\
|
create \\
|
||||||
--verbose \\
|
--verbose \\
|
||||||
--filter AME \\
|
--filter AME \\
|
||||||
@ -575,16 +943,21 @@ borg2 \\
|
|||||||
--exclude '/root/.cache/*' \\
|
--exclude '/root/.cache/*' \\
|
||||||
--exclude '/root/.config/*' \\
|
--exclude '/root/.config/*' \\
|
||||||
--exclude '/root/.local/*' \\
|
--exclude '/root/.local/*' \\
|
||||||
--exclude 'var/tmp/*' \\
|
--exclude '**/tmp/*' \\
|
||||||
|
--exclude '*.lock' \\
|
||||||
|
--exclude '*.log' \\
|
||||||
|
--exclude '*.log.[0-9]' \\
|
||||||
|
--exclude '*.log.[0-9]*.gz' \\
|
||||||
|
--exclude '**/sessions/*' \\
|
||||||
|
--exclude '**/*.20[2-3][0-9]-[0-1][0-9]*' \\
|
||||||
${ARCHIVE_NAME} \\
|
${ARCHIVE_NAME} \\
|
||||||
${BORG_BACKUP_DIRS} \\
|
${BORG_BACKUP_DIRS} ${BACKUP_NET_DIRECTORIES} \\
|
||||||
${DB_BACKUP_DIR}
|
${DB_BACKUP_DIR}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
borg2 \
|
borg2 \
|
||||||
--remote-path borg2 \
|
--remote-path borg2 \
|
||||||
--repo ${BORG_URL} \
|
|
||||||
create \
|
create \
|
||||||
--verbose \
|
--verbose \
|
||||||
--filter AME \
|
--filter AME \
|
||||||
@ -597,16 +970,23 @@ borg2 \
|
|||||||
--exclude '/root/.cache/*' \
|
--exclude '/root/.cache/*' \
|
||||||
--exclude '/root/.config/*' \
|
--exclude '/root/.config/*' \
|
||||||
--exclude '/root/.local/*' \
|
--exclude '/root/.local/*' \
|
||||||
--exclude 'var/tmp/*' \
|
--exclude '**/tmp/*' \
|
||||||
|
--exclude '*.lock' \
|
||||||
|
--exclude '*.log' \
|
||||||
|
--exclude '*.log.[0-9]' \
|
||||||
|
--exclude '*.log.[0-9]*.gz' \
|
||||||
|
--exclude '**/sessions/*' \
|
||||||
|
--exclude '**/*.20[2-3][0-9]-[0-1][0-9]*' \
|
||||||
${ARCHIVE_NAME} \
|
${ARCHIVE_NAME} \
|
||||||
${BORG_BACKUP_DIRS} \
|
${BORG_BACKUP_DIRS} ${BACKUP_NET_DIRECTORIES} ${DB_BACKUP_DIR} 2>> ${log_file}
|
||||||
${DB_BACKUP_DIR} \
|
|
||||||
> ${log_file} 2>&1
|
|
||||||
|
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
declare -i _ret_val=$?
|
||||||
|
|
||||||
|
if [[ ${_ret_val} -gt 0 ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "${log_file}")"
|
cat ${log_file} >> "${BORG_LOG_FILE}"
|
||||||
|
error "_ret_val: ${_ret_val}\n$(cat "${log_file}")"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
cat ${log_file} >> ${BORG_LOG_FILE}
|
cat ${log_file} >> ${BORG_LOG_FILE}
|
||||||
@ -618,7 +998,6 @@ echononl "Pruning repository.."
|
|||||||
cat << EOF >> ${BORG_LOG_FILE}
|
cat << EOF >> ${BORG_LOG_FILE}
|
||||||
borg2 \\
|
borg2 \\
|
||||||
--remote-path borg2 \\
|
--remote-path borg2 \\
|
||||||
--repo ${BORG_URL} \\
|
|
||||||
prune \\
|
prune \\
|
||||||
--list \\
|
--list \\
|
||||||
--show-rc \\
|
--show-rc \\
|
||||||
@ -628,9 +1007,9 @@ borg2 \\
|
|||||||
--keep-yearly ${KEEP_YEARLY} \\
|
--keep-yearly ${KEEP_YEARLY} \\
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
borg2 \
|
borg2 \
|
||||||
--remote-path borg2 \
|
--remote-path borg2 \
|
||||||
--repo ${BORG_URL} \
|
|
||||||
prune \
|
prune \
|
||||||
--list \
|
--list \
|
||||||
--show-rc \
|
--show-rc \
|
||||||
@ -640,6 +1019,7 @@ borg2 \
|
|||||||
--keep-yearly ${KEEP_YEARLY} \
|
--keep-yearly ${KEEP_YEARLY} \
|
||||||
> ${log_file} 2>&1
|
> ${log_file} 2>&1
|
||||||
|
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
if [[ $? -gt 0 ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "${log_file}")"
|
error "$(cat "${log_file}")"
|
||||||
@ -648,22 +1028,23 @@ 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}
|
||||||
borg2 \\
|
borg2 \\
|
||||||
--remote-path borg2 \\
|
--remote-path borg2 \\
|
||||||
--repo ${BORG_URL} \\
|
|
||||||
compact
|
compact
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
# --repo ${BORG_URL} \\
|
||||||
|
|
||||||
borg2 \
|
borg2 \
|
||||||
--remote-path borg2 \
|
--remote-path borg2 \
|
||||||
--repo ${BORG_URL} \
|
|
||||||
compact \
|
compact \
|
||||||
> ${log_file} 2>&1
|
> ${log_file} 2>&1
|
||||||
|
|
||||||
|
# --repo ${BORG_URL} \
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
if [[ $? -gt 0 ]] ; then
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "${log_file}")"
|
error "$(cat "${log_file}")"
|
||||||
@ -675,21 +1056,72 @@ 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.."
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
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
|
echo_failed
|
||||||
error "$(cat "${log_file}")"
|
error "$(cat "${log_file}")"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
blank_line
|
||||||
|
|
||||||
|
|
||||||
|
if ${MOUNT_NETDIR} && [[ -n ${MOUNTED_NET_DIRECTORIES} ]] ; then
|
||||||
|
|
||||||
|
if $terminal ; then
|
||||||
|
echo ""
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
echo -e " \033[32mUnount Network filesystems.. \033[m"
|
||||||
|
echo -e " \033[1m---\033[m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for _net_dir in ${MOUNTED_NET_DIRECTORIES} ; do
|
||||||
|
|
||||||
|
echononl "Unmount network directory '${_net_dir}'.."
|
||||||
|
|
||||||
|
|
||||||
|
cat <<EOF >> ${BORG_LOG_FILE}
|
||||||
|
umount "${_net_dir}" > /dev/null 2> ${log_file}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
umount "${_net_dir}" > /dev/null 2> ${log_file}
|
||||||
|
|
||||||
|
if [[ $? -eq 0 ]];then
|
||||||
|
echo_ok
|
||||||
|
else
|
||||||
|
echo_failed
|
||||||
|
error "$(cat ${log_file})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
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 +1133,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 +1223,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'.."
|
||||||
|
|
||||||
|
@ -253,7 +253,11 @@ fi
|
|||||||
|
|
||||||
[[ -z "${BORG_FUSE_MOUNT_DIR}" ]] && BORG_FUSE_MOUNT_DIR="${DEFAULT_BORG_FUSE_MOUNT_DIR}"
|
[[ -z "${BORG_FUSE_MOUNT_DIR}" ]] && BORG_FUSE_MOUNT_DIR="${DEFAULT_BORG_FUSE_MOUNT_DIR}"
|
||||||
|
|
||||||
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
if [[ "${BORG_HOST,,}" == "localhost" ]] ; then
|
||||||
|
BORG_URL="file://${BORG_REPO}"
|
||||||
|
else
|
||||||
|
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
||||||
|
fi
|
||||||
|
|
||||||
export BORG_PASSPHRASE
|
export BORG_PASSPHRASE
|
||||||
export BORG_REPO
|
export BORG_REPO
|
||||||
|
@ -213,6 +213,8 @@ DEFAULT_SSH_USER="borg"
|
|||||||
DEFAULT_SSH_PORT=22
|
DEFAULT_SSH_PORT=22
|
||||||
DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
|
DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ----------
|
# ----------
|
||||||
# Read Configurations from $conf_file
|
# Read Configurations from $conf_file
|
||||||
# ----------
|
# ----------
|
||||||
@ -293,6 +295,9 @@ else
|
|||||||
while [[ "X${FQHN_BORG2_HOSTNAME}" = "X" ]]; do
|
while [[ "X${FQHN_BORG2_HOSTNAME}" = "X" ]]; do
|
||||||
echononl "Full borg2 hostname: "
|
echononl "Full borg2 hostname: "
|
||||||
read FQHN_BORG2_HOSTNAME
|
read FQHN_BORG2_HOSTNAME
|
||||||
|
if [[ ${FQHN_BORG2_HOSTNAME} =~ ^127 ]] || [[ "${FQHN_BORG2_HOSTNAME,,}" =~ "localhost" ]] ; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
if [[ "X${FQHN_BORG2_HOSTNAME}" = "X" ]]; then
|
if [[ "X${FQHN_BORG2_HOSTNAME}" = "X" ]]; then
|
||||||
echo -e "\n\t\033[33m\033[1mFull qualified hostname is reqired\033[m\n"
|
echo -e "\n\t\033[33m\033[1mFull qualified hostname is reqired\033[m\n"
|
||||||
fi
|
fi
|
||||||
@ -325,7 +330,7 @@ else
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
BORG_REPO="${FQPN_BORG2_REPO%%.*}"
|
BORG_REPO="${FQPN_BORG2_REPO}"
|
||||||
|
|
||||||
|
|
||||||
LIST_OF_FILES_TO_RESTORE=
|
LIST_OF_FILES_TO_RESTORE=
|
||||||
@ -364,50 +369,58 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
SSH_USER=""
|
if [[ ! ${BORG_HOST} =~ ^127 ]] && [[ ! ${BORG_HOST,,} =~ localhost ]] ; then
|
||||||
echo -e "\033[32m--\033[m"
|
SSH_USER=""
|
||||||
echo ""
|
echo -e "\033[32m--\033[m"
|
||||||
echo "Specify the ssh user to connect to the Borg2 host '${BORG_HOST}'."
|
echo ""
|
||||||
echo ""
|
echo "Specify the ssh user to connect to the Borg2 host '${BORG_HOST}'."
|
||||||
echononl "SSH user [${_SSH_USER}]: "
|
echo ""
|
||||||
read SSH_USER
|
echononl "SSH user [${_SSH_USER}]: "
|
||||||
if [[ "X${SSH_USER}" = "X" ]]; then
|
read SSH_USER
|
||||||
|
if [[ "X${SSH_USER}" = "X" ]]; then
|
||||||
SSH_USER="${_SSH_USER}"
|
SSH_USER="${_SSH_USER}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
SSH_PORT=""
|
SSH_PORT=""
|
||||||
echo -e "\033[32m--\033[m"
|
echo -e "\033[32m--\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Specify the ssh port to connect to the Borg2 host '${BORG_HOST}'."
|
echo "Specify the ssh port to connect to the Borg2 host '${BORG_HOST}'."
|
||||||
echo ""
|
echo ""
|
||||||
while [[ "X${SSH_PORT}" = "X" ]]; do
|
while [[ "X${SSH_PORT}" = "X" ]]; do
|
||||||
echononl "SSH user [${_SSH_PORT}]: "
|
echononl "SSH user [${_SSH_PORT}]: "
|
||||||
read SSH_PORT
|
read SSH_PORT
|
||||||
if [[ "X${SSH_PORT}" = "X" ]]; then
|
if [[ "X${SSH_PORT}" = "X" ]]; then
|
||||||
SSH_PORT="${_SSH_PORT}"
|
SSH_PORT="${_SSH_PORT}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
BORG_RSH=""
|
BORG_RSH=""
|
||||||
echo -e "\033[32m--\033[m"
|
echo -e "\033[32m--\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Specify the ssh command which is used to connect to the Borg2 host '${BORG_HOST}'."
|
echo "Specify the ssh command which is used to connect to the Borg2 host '${BORG_HOST}'."
|
||||||
echo ""
|
echo ""
|
||||||
while [[ "X${BORG_RSH}" = "X" ]]; do
|
while [[ "X${BORG_RSH}" = "X" ]]; do
|
||||||
echononl "SSH command [${_BORG_RSH}]: "
|
echononl "SSH command [${_BORG_RSH}]: "
|
||||||
read BORG_RSH
|
read BORG_RSH
|
||||||
if [[ "X${BORG_RSH}" = "X" ]]; then
|
if [[ "X${BORG_RSH}" = "X" ]]; then
|
||||||
BORG_RSH="${_BORG_RSH}"
|
BORG_RSH="${_BORG_RSH}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
export BORG_RSH
|
||||||
|
fi
|
||||||
|
|
||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
echo -e "\033[32m--\033[m"
|
echo -e "\033[32m--\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
export BORG_HOST
|
||||||
|
export BORG_PASSPHRASE
|
||||||
|
export BORG_REPO
|
||||||
|
|
||||||
# List Borg Backups
|
# List Borg Backups
|
||||||
#
|
#
|
||||||
(
|
(
|
||||||
@ -431,9 +444,9 @@ done
|
|||||||
echo -e " \033[33m---------------------------------------------\033[m"
|
echo -e " \033[33m---------------------------------------------\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
export BORG_PASSPHRASE
|
|
||||||
export BORG_REPO
|
BORG_RESTORE_PATH_BACKUP_SERVER="/backup/RESTORE/$(basename "${BORG_REPO}")/${BORG_BACKUP_ID}"
|
||||||
export BORG_RSH
|
|
||||||
|
|
||||||
_BORG_RESTORE_PATH="/data/RESTORE/$(basename "${BORG_REPO}")/${BORG_BACKUP_ID}"
|
_BORG_RESTORE_PATH="/data/RESTORE/$(basename "${BORG_REPO}")/${BORG_BACKUP_ID}"
|
||||||
|
|
||||||
@ -543,9 +556,9 @@ export BORG_PASSPHRASE=\"${BORG_PASSPHRASE}\"
|
|||||||
export BORG_REPO=\"${BORG_REPO}\"
|
export BORG_REPO=\"${BORG_REPO}\"
|
||||||
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
|
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
|
||||||
|
|
||||||
mkdir -p \"${BORG_RESTORE_PATH}\"
|
mkdir -p \"${BORG_RESTORE_PATH_BACKUP_SERVER}\"
|
||||||
|
|
||||||
cd "${BORG_RESTORE_PATH}"
|
cd "${BORG_RESTORE_PATH_BACKUP_SERVER}"
|
||||||
|
|
||||||
borg2 --remote-path borg2 --repo ${BORG_REPO} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE}
|
borg2 --remote-path borg2 --repo ${BORG_REPO} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE}
|
||||||
"
|
"
|
||||||
@ -622,9 +635,9 @@ export BORG_PASSPHRASE=\"${BORG_PASSPHRASE}\"
|
|||||||
export BORG_REPO=\"${BORG_REPO}\"
|
export BORG_REPO=\"${BORG_REPO}\"
|
||||||
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
|
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
|
||||||
|
|
||||||
mkdir -p \"${BORG_RESTORE_PATH}\"
|
mkdir -p \"${BORG_RESTORE_PATH_BACKUP_SERVER}\"
|
||||||
|
|
||||||
cd "${BORG_RESTORE_PATH}"
|
cd "${BORG_RESTORE_PATH_BACKUP_SERVER}"
|
||||||
|
|
||||||
borg2 --remote-path borg2 --repo ${BORG_REPO} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE}
|
borg2 --remote-path borg2 --repo ${BORG_REPO} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE}
|
||||||
"
|
"
|
||||||
@ -634,17 +647,27 @@ echo -e "-----------------------------------------------------------------------
|
|||||||
|
|
||||||
blank_line
|
blank_line
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo " Restore from archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to"
|
echo " Restore from archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to"
|
||||||
echononl " '${BORG_RESTORE_PATH}'.."
|
echononl " '${BORG_RESTORE_PATH}'.."
|
||||||
#echononl "Restore from archive '$(basename "${BORG_REPO}")::${BORG_BACKUP_ID}' to '${BORG_RESTORE_PATH}'.."
|
if [[ ${FQHN_BORG2_HOSTNAME} =~ ^127 ]] || [[ "${FQHN_BORG2_HOSTNAME,,}" =~ "localhost" ]] ; then
|
||||||
|
borg2 --remote-path borg2 --repo ${BORG_REPO} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE} > "${log_file}" 2>&1
|
||||||
borg2 --remote-path borg2 --repo ${BORG_URL} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE} > "${log_file}" 2>&1
|
if [[ $? -gt 0 ]] ; then
|
||||||
|
|
||||||
if [[ $? -gt 0 ]] ; then
|
|
||||||
echo_failed
|
echo_failed
|
||||||
error "$(cat "${log_file}")"
|
error "$(cat "${log_file}")"
|
||||||
else
|
else
|
||||||
echo_ok
|
echo_ok
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
borg2 --remote-path borg2 --repo ${BORG_URL} extract ${BORG_BACKUP_ID} ${LIST_OF_FILES_TO_RESTORE} > "${log_file}" 2>&1
|
||||||
|
if [[ $? -gt 0 ]] ; then
|
||||||
|
echo_failed
|
||||||
|
error "$(cat "${log_file}")"
|
||||||
|
else
|
||||||
|
echo_ok
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
blank_line
|
blank_line
|
||||||
|
@ -225,10 +225,12 @@ DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
|
|||||||
# ----------
|
# ----------
|
||||||
|
|
||||||
|
|
||||||
if [[ -f "$conf_file" ]]; then
|
if [[ -z "${BORG_HOST}" ]] || [[ -z "${BORG_REPO}" ]] || [[ -z "${BORG_PASSPHRASE}" ]] ; then
|
||||||
|
if [[ -f "$conf_file" ]]; then
|
||||||
source "$conf_file"
|
source "$conf_file"
|
||||||
else
|
else
|
||||||
fatal "No configuration file '$conf_file' present!"
|
fatal "No configuration file '$conf_file' present!"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -256,7 +258,11 @@ fi
|
|||||||
|
|
||||||
[[ -z "${BORG_RSH}" ]] && BORG_RSH="${DEFAULT_BORG_RSH}"
|
[[ -z "${BORG_RSH}" ]] && BORG_RSH="${DEFAULT_BORG_RSH}"
|
||||||
|
|
||||||
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
if [[ "${BORG_HOST,,}" == "localhost" ]] ; then
|
||||||
|
BORG_URL="file://${BORG_REPO}"
|
||||||
|
else
|
||||||
|
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
||||||
|
fi
|
||||||
|
|
||||||
export BORG_PASSPHRASE
|
export BORG_PASSPHRASE
|
||||||
export BORG_REPO
|
export BORG_REPO
|
||||||
@ -278,10 +284,20 @@ export BORG_RELOCATED_REPO_ACCESS_IS_OK
|
|||||||
|
|
||||||
echo -e " \033[1mDate\033[33GBorg Backup ID\033[m\n"
|
echo -e " \033[1mDate\033[33GBorg Backup ID\033[m\n"
|
||||||
|
|
||||||
while read -r _borg_id _date_weekday _date_date _date_time _time_stamp_borg_backup || [[ -n $_line ]] ; do
|
if [[ ${BORG_HOST} =~ ^127 ]] || [[ "${BORG_HOST,,}" =~ "localhost" ]] ; then
|
||||||
|
|
||||||
|
while read -r _borg_id _date_weekday _date_date _date_time _time_stamp_borg_backup || [[ -n $_line ]] ; do
|
||||||
|
|
||||||
echo -e " ${_date_weekday} ${_date_date} ${_date_time} [ \033[33m${_borg_id}\033[m ]"
|
echo -e " ${_date_weekday} ${_date_date} ${_date_time} [ \033[33m${_borg_id}\033[m ]"
|
||||||
|
|
||||||
done < <(borg2 --remote-path borg2 --repo ${BORG_URL} rlist)
|
done < <(borg2 --remote-path borg2 --repo ${BORG_REPO} rlist)
|
||||||
|
|
||||||
|
else
|
||||||
|
while read -r _borg_id _date_weekday _date_date _date_time _time_stamp_borg_backup || [[ -n $_line ]] ; do
|
||||||
|
|
||||||
|
echo -e " ${_date_weekday} ${_date_date} ${_date_time} [ \033[33m${_borg_id}\033[m ]"
|
||||||
|
|
||||||
|
done < <(borg2 --remote-path borg2 --repo ${BORG_URL} rlist)
|
||||||
|
fi
|
||||||
|
|
||||||
clean_up 0
|
clean_up 0
|
||||||
|
@ -253,7 +253,11 @@ fi
|
|||||||
|
|
||||||
[[ -z "${BORG_FUSE_MOUNT_DIR}" ]] && BORG_FUSE_MOUNT_DIR="${DEFAULT_BORG_FUSE_MOUNT_DIR}"
|
[[ -z "${BORG_FUSE_MOUNT_DIR}" ]] && BORG_FUSE_MOUNT_DIR="${DEFAULT_BORG_FUSE_MOUNT_DIR}"
|
||||||
|
|
||||||
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
if [[ "${BORG_HOST,,}" == "localhost" ]] ; then
|
||||||
|
BORG_URL="file://${BORG_REPO}"
|
||||||
|
else
|
||||||
|
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
||||||
|
fi
|
||||||
|
|
||||||
export BORG_PASSPHRASE
|
export BORG_PASSPHRASE
|
||||||
export BORG_REPO
|
export BORG_REPO
|
||||||
|
@ -253,7 +253,11 @@ fi
|
|||||||
|
|
||||||
[[ -z "${BORG_FUSE_MOUNT_DIR}" ]] && BORG_FUSE_MOUNT_DIR="${DEFAULT_BORG_FUSE_MOUNT_DIR}"
|
[[ -z "${BORG_FUSE_MOUNT_DIR}" ]] && BORG_FUSE_MOUNT_DIR="${DEFAULT_BORG_FUSE_MOUNT_DIR}"
|
||||||
|
|
||||||
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
if [[ "${BORG_HOST,,}" == "localhost" ]] ; then
|
||||||
|
BORG_URL="file://${BORG_REPO}"
|
||||||
|
else
|
||||||
|
BORG_URL="ssh://${SSH_USER}@${BORG_HOST}:${SSH_PORT}${BORG_REPO}"
|
||||||
|
fi
|
||||||
|
|
||||||
export BORG_PASSPHRASE
|
export BORG_PASSPHRASE
|
||||||
export BORG_REPO
|
export BORG_REPO
|
||||||
|
@ -114,6 +114,41 @@
|
|||||||
#NC_DB_BACKUP_DIR="/data/backup/sql"
|
#NC_DB_BACKUP_DIR="/data/backup/sql"
|
||||||
|
|
||||||
|
|
||||||
|
# ---
|
||||||
|
# DB related parameters
|
||||||
|
# ---
|
||||||
|
|
||||||
|
# MYSQL_PERFORMANCE_SETTINGS
|
||||||
|
#
|
||||||
|
# To increase performance, some global variables are changed before writing the database dump.
|
||||||
|
#
|
||||||
|
# Settings are:
|
||||||
|
# - SET GLOBAL autocommit='OFF'
|
||||||
|
# - SET GLOBAL foreign_key_checks='OFF'
|
||||||
|
# - SET GLOBAL unique_checks='OFF'
|
||||||
|
# - SET GLOBAL innodb_flush_log_at_trx_commit=2
|
||||||
|
# - SET GLOBAL max_allowed_packet=1073741824
|
||||||
|
#
|
||||||
|
# After the databases have been backed up, the values are reset.
|
||||||
|
#
|
||||||
|
# Defaults to:
|
||||||
|
#
|
||||||
|
# MYSQL_PERFORMANCE_SETTINGS=false
|
||||||
|
#
|
||||||
|
#MYSQL_PERFORMANCE_SETTINGS=false
|
||||||
|
|
||||||
|
|
||||||
|
# MYSQL_MAX_ALLOWED_PACKET
|
||||||
|
#
|
||||||
|
# Set/Change this value only for dumping the NC database
|
||||||
|
#
|
||||||
|
# Defaults to:
|
||||||
|
#
|
||||||
|
# #MYSQL_MAX_ALLOWED_PACKET=1G
|
||||||
|
#
|
||||||
|
#MYSQL_MAX_ALLOWED_PACKET=1G
|
||||||
|
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
# Other Backups
|
# Other Backups
|
||||||
# ---
|
# ---
|
||||||
|
@ -88,14 +88,15 @@
|
|||||||
#
|
#
|
||||||
# possible values:
|
# possible values:
|
||||||
# - MySQL
|
# - MySQL
|
||||||
# - PostgreSQL or postgres or psql
|
# - PostgreSQL (or postgres or psql)
|
||||||
|
# - MySQL,PostgreSQL (or MySQL PostgreSQL)
|
||||||
# - None
|
# - None
|
||||||
#
|
#
|
||||||
# Defaults to:
|
# Defaults to:
|
||||||
#
|
#
|
||||||
# DB_TYPE="None"
|
# DB_TYPE = "None"
|
||||||
#
|
#
|
||||||
# DB_TYPE="None"
|
#DB_TYPE = "None"
|
||||||
|
|
||||||
|
|
||||||
# MYSQL_CREDENTIALS
|
# MYSQL_CREDENTIALS
|
||||||
@ -129,6 +130,26 @@
|
|||||||
#MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
#MYSQL_CREDENTIALS="-u root -S /run/mysqld/mysqld.sock"
|
||||||
|
|
||||||
|
|
||||||
|
# MYSQL_PERFORMANCE_SETTINGS
|
||||||
|
#
|
||||||
|
# To increase performance, some global variables are changed before writing the database dump.
|
||||||
|
#
|
||||||
|
# Settings are:
|
||||||
|
# - SET GLOBAL autocommit='OFF'
|
||||||
|
# - SET GLOBAL foreign_key_checks='OFF'
|
||||||
|
# - SET GLOBAL unique_checks='OFF'
|
||||||
|
# - SET GLOBAL innodb_flush_log_at_trx_commit=2
|
||||||
|
# - SET GLOBAL max_allowed_packet=1073741824
|
||||||
|
#
|
||||||
|
# After the databases have been backed up, the values are reset.
|
||||||
|
#
|
||||||
|
# Defaults to:
|
||||||
|
#
|
||||||
|
# MYSQL_PERFORMANCE_SETTINGS=false
|
||||||
|
#
|
||||||
|
#MYSQL_PERFORMANCE_SETTINGS=false
|
||||||
|
|
||||||
|
|
||||||
# PSQL_SYSTEM_USER
|
# PSQL_SYSTEM_USER
|
||||||
#
|
#
|
||||||
# User who owns PostgreSQL services
|
# User who owns PostgreSQL services
|
||||||
@ -168,6 +189,21 @@
|
|||||||
#BACKUP_DIRECTORIES="/etc /home /root /var/spool/cron"
|
#BACKUP_DIRECTORIES="/etc /home /root /var/spool/cron"
|
||||||
|
|
||||||
|
|
||||||
|
# BACKUP_NET_DIRECTORIES
|
||||||
|
#
|
||||||
|
# Defaults to:
|
||||||
|
#
|
||||||
|
# BACKUP_NET_DIRECTORIES=""
|
||||||
|
#
|
||||||
|
# - Blank separated list of net directories -
|
||||||
|
#
|
||||||
|
# !! Note !!
|
||||||
|
#
|
||||||
|
# every net directoty
|
||||||
|
#
|
||||||
|
#BACKUP_NET_DIRECTORIES=""
|
||||||
|
|
||||||
|
|
||||||
# KEEP_DAILY
|
# KEEP_DAILY
|
||||||
#
|
#
|
||||||
# Number of daily archives to keep
|
# Number of daily archives to keep
|
||||||
|
Reference in New Issue
Block a user