reorganize borgmatic scripts

This commit is contained in:
2025-11-09 12:08:41 +01:00
parent 012c88268c
commit c3142c4ca9
5 changed files with 58 additions and 38 deletions

View File

@@ -1 +1 @@
0 2 * * * /scripts/run.sh 0 2 * * * /scripts/run_all.sh

View File

@@ -1,26 +0,0 @@
CONFIG_FILE="$1"
MQTT_BROKER="host"
MQTT_TOPIC="borgmatic/stats/$CONFIG_FILE"
MQTT_USER="borgmatic"
MQTT_PASSWORD="eH2dAiG7siCIFdB7qX0MHwEFzcr9aqUi"
# Run Borgmatic and extract archive stats as JSON
PAYLOAD=$(borgmatic \
--stats \
-v 0 \
-c "/config/$CONFIG_FILE.yaml" \
--log-json \
--no-color \
--json \
| tee /dev/tty \
| sed --quiet '/^\[/p' \
| jq '.[0].archive'
)
# Publish to MQTT
mosquitto_pub -h "$MQTT_BROKER" \
-t "$MQTT_TOPIC" \
-u "$MQTT_USER" \
-P "$MQTT_PASSWORD" \
-m "$PAYLOAD"

View File

@@ -1,10 +0,0 @@
borgmatic --stats -v 0 -c /config/home.yaml >> /log/home.log 2>&1
borgmatic --stats -v 0 -c /config/root.yaml >> /log/root.log 2>&1
borgmatic --stats -v 0 -c /config/opt.yaml >> /log/opt.log 2>&1
borgmatic --stats -v 0 -c /config/etc.yaml >> /log/etc.log 2>&1
export REMOTE=/remote/server/bram
mkdir -p ${REMOTE}
sshfs user@bram.veenboer.xyz:/media/helios/Bram ${REMOTE}
borgmatic --stats -v 0 -c /config/bram.yaml >> /log/bram.log 2>&1
umount ${REMOTE}

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
for name in home root opt etc bram; do for name in home root opt etc bram; do
echo $name echo $name
/scripts/mqtt.sh "$name" >> "/log/$name.log" 2>&1 /scripts/run_one.sh "$name" >> "/log/$name.log" 2>&1
done done

56
borgmatic/scripts/run_one.sh Executable file
View File

@@ -0,0 +1,56 @@
#!/bin/bash
set -euo pipefail
CONFIG_FILE="$1"
LOKI_HOST=host
MQTT_BROKER=host
MQTT_TOPIC="borgmatic/stats/$CONFIG_FILE"
MQTT_USER="borgmatic"
MQTT_PASSWORD="eH2dAiG7siCIFdB7qX0MHwEFzcr9aqUi"
# Run Borgmatic and extract archive stats as JSON
ARCHIVE_JSON=$(borgmatic \
--stats \
-v 0 \
-c "/config/$CONFIG_FILE.yaml" \
--log-json \
--no-color \
--json \
| tail -n1 \
| jq '.[0].archive'
)
echo $ARCHIVE_JSON
echo "----- ARCHIVE_JSON"
echo $ARCHIVE_JSON
echo "-----"
# Publish to MQTT
mosquitto_pub -h "$MQTT_BROKER" \
-t "$MQTT_TOPIC" \
-u "$MQTT_USER" \
-P "$MQTT_PASSWORD" \
-m "$ARCHIVE_JSON"
# Build Loki payload
LOKI_PAYLOAD=$(jq -n \
--arg config "$CONFIG_FILE" \
--argjson archive "$ARCHIVE_JSON" \
--arg now "$(date +%s%N)" \
'{streams: [
{
stream: {job: "borgmatic", config: $config},
values: [[$now, ($archive | tostring)]]
}
]}')
echo "----- LOKI_PAYLOAD"
echo $LOKI_PAYLOAD
echo "-----"
# Send to Loki
curl -s -X POST "http://$LOKI_HOST:3100/loki/api/v1/push" \
-H "Content-Type: application/json" \
-d "$LOKI_PAYLOAD"