@@ -8,35 +8,73 @@ log_sub() {
88 printf " | %s\n" " ${1} "
99}
1010
11- log " xjokay/loxone-backup ${VERSION} "
11+ config () {
12+ log " Configuration"
13+ log_sub " "
14+ log_sub " INTERVAL: ${INTERVAL} "
15+ log_sub " KEEP_DAYS: ${KEEP_DAYS} "
16+ log_sub " VERBOSE: ${VERBOSE} "
17+ log_sub " EXCLUDE_DIRS: ${EXCLUDE_DIRS} "
18+ }
1219
13- mkdir -p " /data/current" " /data/archives"
20+ check () {
21+ if [ -z " ${LOXONE_IP} " ] || [ -z " ${LOXONE_USERNAME} " ] || [ -z " ${LOXONE_PASSWORD} " ]; then
22+ log " Required environment variables are missing!"
23+ log_sub " Please specify LOXONE_IP, LOXONE_USERNAME and LOXONE_PASSWORD."
24+ exit 1
25+ fi
26+ }
1427
15- if [ -z " ${LOXONE_IP} " ] || [ -z " ${LOXONE_USERNAME} " ] || [ -z " ${LOXONE_PASSWORD} " ]; then
16- log " Required environment variables are missing!"
17- log_sub " Please specify LOXONE_IP, LOXONE_USERNAME and LOXONE_PASSWORD."
18- exit 1
19- fi
28+ setup () {
29+ mkdir -p " /data/current" " /data/archives"
30+ }
2031
21- FTP_PARAMS=" -a -n -e -P=5 --use-pget-n=1 --skip-noaccess --use-cache --log=ftp.log"
32+ ftp_params () {
33+ FTP_PARAMS=" -a -n -e -P=5 --use-pget-n=1 --skip-noaccess --use-cache --log=ftp.log"
2234
23- if [ " ${VERBOSE} " = " true" ]; then
24- FTP_PARAMS=" ${FTP_PARAMS} -vvv"
25- fi
35+ if [ " ${VERBOSE} " = " true" ]; then
36+ FTP_PARAMS=" ${FTP_PARAMS} -vvv"
37+ fi
2638
27- while : ; do
28- cd " /data" || exit
39+ if [ -n " ${EXCLUDE_DIRS} " ]; then
40+ for EXCLUDE_DIR in $( printf " %s" " ${EXCLUDE_DIRS} " | sed ' s/,/ /g' ) ; do
41+ rm -rf " /data/current/${EXCLUDE_DIR} "
42+ FTP_PARAMS=" ${FTP_PARAMS} -x '${EXCLUDE_DIR} /'"
43+ done
44+ fi
45+ }
2946
47+ backup () {
3048 log " Backup files from Loxone (${LOXONE_IP} ) ..."
3149 lftp " ${LOXONE_IP} " -u " ${LOXONE_USERNAME} ,${LOXONE_PASSWORD} " -e " set ssl:verify-certificate false; mirror ${FTP_PARAMS} . current; quit"
3250 tar -czf " archives/loxone_backup_${LOXONE_IP} _$( date +%Y-%m-%d_%H-%M-%S) .tar.gz" " current/"
51+ }
3352
53+ cleanup () {
3454 if [ " ${KEEP_DAYS} " -gt 0 ]; then
3555 cd " /data/archives" || exit
3656
3757 log " Cleanup backups older than ${KEEP_DAYS} day(s) ..."
3858 find . -mtime " +${KEEP_DAYS} " -print0 | xargs --no-run-if-empty rm
3959 fi
60+ }
61+
62+ log " xjokay/loxone-backup ${VERSION} "
63+
64+ check
65+
66+ config
67+
68+ setup
69+
70+ ftp_params
71+
72+ while : ; do
73+ cd " /data" || exit
74+
75+ backup
76+
77+ cleanup
4078
4179 next=$( date -d " @$(( $(date +% s) + INTERVAL)) " +%Y-%m-%dT%H:%M:%S%z)
4280 log " Next run on ${next} ..."
0 commit comments