Add support for network directories.

This commit is contained in:
2025-07-07 21:56:51 +02:00
parent dc8a847990
commit 23bd6ffc12
2 changed files with 103 additions and 2 deletions

View File

@ -203,6 +203,7 @@ DEFAULT_BORG_RSH='ssh -i /root/.ssh/id_ed25519-borg-backup'
DEFAULT_DB_BACKUP_DIR="/data/backup/sql"
DEFAULT_BACKUP_DIRECTORIES="/etc /home /root /var/spool/cron"
MOUNT_NETDIR=false
DEFAULT_KEEP_DAILY=10
DEFAULT_KEEP_WEEKLY=5
@ -337,6 +338,8 @@ fi
[[ -z "${BACKUP_DIRECTORIES}" ]] && BACKUP_DIRECTORIES="${DEFAULT_BACKUP_DIRECTORIES}"
[[ -n "${BACKUP_NET_DIRECTORIES}" ]] && MOUNT_NETDIR=true
# By default: Borg won't follow symlinks
#
BORG_BACKUP_DIRS=""
@ -787,6 +790,51 @@ EOF
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
@ -797,6 +845,11 @@ if $terminal ; then
echo ""
fi
blank_line
echononl "Create borg backup.."
cat << EOF >> ${BORG_LOG_FILE}
@ -823,7 +876,7 @@ borg2 \\
--exclude '**/sessions/*' \\
--exclude '**/*.20[2-3][0-9]-[0-1][0-9]*' \\
${ARCHIVE_NAME} \\
${BORG_BACKUP_DIRS} \\
${BORG_BACKUP_DIRS} ${BACKUP_NET_DIRECTORIES} \\
${DB_BACKUP_DIR}
EOF
@ -851,7 +904,7 @@ borg2 \
--exclude '**/sessions/*' \
--exclude '**/*.20[2-3][0-9]-[0-1][0-9]*' \
${ARCHIVE_NAME} \
${BORG_BACKUP_DIRS} \
${BORG_BACKUP_DIRS} ${BACKUP_NET_DIRECTORIES} \
${DB_BACKUP_DIR} \
> ${log_file} 2>&1
@ -957,6 +1010,39 @@ if [[ -n "${DB_TYPE}" ]] && [[ ! "${DB_TYPE,,}" = "none" ]]; then
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

View File

@ -189,6 +189,21 @@
#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
#
# Number of daily archives to keep