#!/bin/bash
# snapshot.sh - Automated snapshot creation
# Configuration
SNAPSHOT_DIR="/var/snapshots"
STABLED_HOME="$HOME/.stabled"
KEEP_DAYS=7
# Create snapshot directory
mkdir -p $SNAPSHOT_DIR
# Stop node
sudo systemctl stop ${SERVICE_NAME}
# Create snapshot
SNAPSHOT_NAME="stable-snapshot-$(date +%Y%m%d-%H%M%S).tar.lz4"
tar -cf - -C $STABLED_HOME data/ | lz4 -9 > $SNAPSHOT_DIR/$SNAPSHOT_NAME
# Generate metadata
cat > $SNAPSHOT_DIR/latest.json <<EOF
{
"filename": "$SNAPSHOT_NAME",
"height": "$(cat $STABLED_HOME/data/cs.wal/wal | grep height | tail -1 | awk '{print $2}' | tr -d ',')",
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"size": "$(du -h $SNAPSHOT_DIR/$SNAPSHOT_NAME | awk '{print $1}')",
"checksum": "$(sha256sum $SNAPSHOT_DIR/$SNAPSHOT_NAME | awk '{print $1}')"
}
EOF
# Clean old snapshots
find $SNAPSHOT_DIR -name "stable-snapshot-*.tar.lz4" -mtime +$KEEP_DAYS -delete
# Restart node
sudo systemctl start ${SERVICE_NAME}
echo "Snapshot created: $SNAPSHOT_DIR/$SNAPSHOT_NAME"