diff --git a/borg2-backup.sh b/borg2-backup.sh index ed6619a..a74930c 100755 --- a/borg2-backup.sh +++ b/borg2-backup.sh @@ -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 <> ${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 <> ${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 diff --git a/conf/borg2-backup.conf.sample b/conf/borg2-backup.conf.sample index c80abf4..1a3dd01 100644 --- a/conf/borg2-backup.conf.sample +++ b/conf/borg2-backup.conf.sample @@ -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