#!/bin/sh CONFIG_PATH=/data/options.json NUM_SNAPSHOTS=$(jq --raw-output ".num_snapshots" $CONFIG_PATH) # TODO: check if NUM_SNAPSHOTS>1 CURRENT_SNAPSHOTS=$( curl -s -H "X-HASSIO-KEY: $HASSIO_TOKEN" http://hassio/snapshots ) # TODO: check if CURRENT_SNAPSHOTS returns ok START_TIMESTAMP=$(date "+%s") # take snapshot (this can take a long time) RESULT=$( curl -s -H "X-HASSIO-KEY: $HASSIO_TOKEN" --data '{"name":"Automatic Snapshot"}' -X POST http://hassio/snapshots/new/full ) SNAPSHOT_TIMESTAMP=$(date "+%s") SNAPSHOT_TIME=$(echo "$SNAPSHOT_TIMESTAMP - $START_TIMESTAMP" | bc) STATUS=$(echo "$RESULT" | jq --raw-output '.result') if [ ! "$STATUS" = "ok" ] ; then echo "Snapshot FAILED after $SNAPSHOT_TIME seconds." exit 1 fi SLUG=$(echo "$RESULT" | jq --raw-output '.data.slug') echo "Snapshot $SLUG taken SUCCESSFULLY in $SNAPSHOT_TIME seconds." FIRST_SLUG_TO_DELETE=$(echo "1 + $NUM_SNAPSHOTS" | bc) echo $CURRENT_SNAPSHOTS | jq --raw-output ".data.snapshots | sort_by(.date) | reverse[] | select(.slug != \"$SLUG\") | select (.protected==false) | .slug " | tail -n +$FIRST_SLUG_TO_DELETE | while read SLUG_TO_DELETE do echo "Removing snapshot $SLUG_TO_DELETE" curl -s -H "X-HASSIO-KEY: $HASSIO_TOKEN" -X POST http://hassio/snapshots/$SLUG_TO_DELETE/remove done