aboutsummaryrefslogtreecommitdiffstats
path: root/alpine-backup
blob: 22af5a5c8b2bdcb3c36a4ceadacb47681abaa807 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh

RBU_CONF=/etc/lbu/rbu.conf

if [ -f "$RBU_CONF" ]; then
	. "$RBU_CONF"
else
	echo "Cannot read $RBU_CONF"
	exit 1
fi

# set the suffix of backup files when ecryptions is enabled
[ -n "$ENCRYPTION" ] && export SUFFIX=".$ENCRYPTION"

# convert hostname to intra FQDN
HOSTNAME=$(hostname)
if [ -n $HOST ]; then
        export FQDN="${HOSTNAME}.${HOST}.intra.alpinelinux.org"
else
        export FQDN="${HOSTNAME}.intra.alpinelinux.org"
fi

START_TS=$(date +%s)

LOGFILE="$BACKUP_CACHE/$FQDN-$(date -u "+%Y%m%d%H%M%S").log"
lbu_commit >>"$LOGFILE" 2>&1
ret=$?

DURATION=$(($(date +%s)-$START_TS))
SIZE=0
STATUS=failed

if [ $ret = 0 ]; then
	[ -n "$ENCRYPTION" ] && SUFFIX=".$ENCRYPTION"
	BACKUP="$BACKUP_LOCATION/$(hostname).apkovl.tar.gz${SUFFIX}"
	SIZE=$(stat -c %s $BACKUP)
	STATUS=success
fi

ssh "$BACKUP_SERVER" mkdir -p $FQDN/logs
scp -q $LOGFILE "$BACKUP_SERVER:$FQDN/logs"

PAYLOAD=$(printf '{ "status": "%s", "size": %u, "duration": %u }' "$STATUS" "$SIZE" "$DURATION")
JSON=$(printf '{ "host": "%s", "key": "backup", "payload": %s }' "$FQDN" "$PAYLOAD")

mosquitto_pub -h msg.alpinelinux.org -t "monitoring/updates" -m "$JSON"