diff --git a/defaults.inc b/defaults.inc index 3007c3fb..ff218437 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,5 +1,5 @@ #!/usr/bin/env bash -VERS='5.1.52-01042024' +VERS='5.1.53-01042024' NM_BETA=false noheader=' service status-check nightlyrephp7.3-fpm,new backup report check checkcerts gitea update-nodes copynpmcerts singleservercheck update-dyndns backup-offsitepfsense gui nightlyreview update log betacheck ' diff --git a/nodemgmt-scripts.sh b/nodemgmt-scripts.sh index 3e9ce6dd..76d8fc77 100755 --- a/nodemgmt-scripts.sh +++ b/nodemgmt-scripts.sh @@ -634,6 +634,77 @@ BACKUP_UNIFIUDM(){ fi } +BACKUP_UNIFINVR(){ + BAKFOLDER=/mnt/Veam-UniFi-NVR_Backups + UNIFINVR_IP='10.10.70.1' + + if [ "$(CHECK_HOST ${UNIFINVR_IP})" != "false" ]; then + if [ ! -f ${BAKFOLDER}/mounted ]; then + mount -a + sleep 2s + if [ ! -f ${BAKFOLDER}/mounted ]; then + echo "Can't mount backup folder" + SENDNOTICE "Unifi-NVR Backup Failed" "Could not mount backup folder" 1 + exit 1 + fi + fi + + newBAKFOLDER=$(date +%Y%m%d-%H%M%S) + mkdir ${BAKFOLDER}/${newBAKFOLDER} + DOM='01' + DOW='1' + DailyBackupsToKeep=14 + WeeklyBackupsToKeep=8 + MonthlyBackupsToKeep=3 + + ssh root@${UNIFINVR_IP} tar -c -f /volume1/data_backup.tar.gz /data + ssh root@${UNIFINVR_IP} tar -c -f /volume1/root_backup.tar.gz /root + ssh root@${UNIFINVR_IP} tar -c -f /volume1/unifi_backup.tar.gz /volume1/.srv/unifi-protect/backups /volume1/.srv/unifi-protect/data /volume1/.srv/unifi-protect/dbBackups + + scp root@${UNIFINVR_IP}:/volume1/*_backup.tar.gz ${BAKFOLDER}/${newBAKFOLDER}/ + ssh root@${UNIFINVR_IP} rm -f /volume1/*_backup.tar.gz + + cd ${BAKFOLDER} + if [ "$(date +%d)" == "${DOM}" ] && [ "$(date +%u)" == "${DOW}" ]; then + mv ${newBAKFOLDER} "${newBAKFOLDER}-M" + ln -s "${newBAKFOLDER}-M" "${newBAKFOLDER}-W" + ln -s "${newBAKFOLDER}-M" "${newBAKFOLDER}-D" + elif [ "$(date +%d)" == "${DOM}" ]; then + mv ${newBAKFOLDER} "${newBAKFOLDER}-M" + ln -s "${newBAKFOLDER}-M" "${newBAKFOLDER}-D" + elif [ "$(date +%u)" == "${DOW}" ]; then + mv ${newBAKFOLDER} "${newBAKFOLDER}-W" + ln -s "${newBAKFOLDER}-W" "${newBAKFOLDER}-D" + else + mv ${newBAKFOLDER} "${newBAKFOLDER}-D" + fi + + dailyfilestokeep=(`ls -d ${BAKFOLDER}/*-D 2> /dev/null | tail -${DailyBackupsToKeep}`) + weeklyfilestokeep=(`ls -d ${BAKFOLDER}/*-W 2> /dev/null | tail -${WeeklyBackupsToKeep}`) + monthlyfilestokeep=(`ls -d ${BAKFOLDER}/*-M 2> /dev/null | tail -${MonthlyBackupsToKeep}`) + for folder in $(ls -d ${BAKFOLDER}/*); do + if [ "${folder}" != "${BAKFOLDER}/mounted" ]; then + if [[ "${folder}" == *"-D"* ]]; then + filestokeep=${dailyfilestokeep[@]} + elif [[ "${folder}" == *"-W"* ]]; then + filestokeep=${weeklyfilestokeep[@]} + elif [[ "${folder}" == *"-M"* ]]; then + filestokeep=${monthlyfilestokeep[@]} + fi + keep=0 + for file in ${filestokeep}; do + if [ "${folder}" == "${file}" ]; then + keep=1; break + fi + done; + [ $keep == 0 ] && delFolder="D:\\UniFi-NVR_Backups\\${folder##*/}" && ssh backup@10.10.1.60 rmdir "${delFolder}" + fi + done + else + SENDNOTICE "UniFi-NVR Backup Failed" "Could not contact 'NVR @ ${UNIFINVR_IP}' for backup" 1 + fi +} + RUN_COMMAND(){ echo "${1} ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9} ${10} ${11} ${12} ${13} ${14}" for NTYPE in "${NM_NODE_TYPES[@]}"; do