Files
2026-01-27 17:35:45 -05:00

56 lines
1.4 KiB
Bash

#!/bin/bash
# Vault Backup Script (Raft Storage)
# Usage: ./vault-backup.sh [output-dir]
set -euo pipefail
OUTPUT_DIR="${1:-./vault-backups}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$OUTPUT_DIR/vault-snapshot-$TIMESTAMP.snap"
mkdir -p "$OUTPUT_DIR"
echo "========================================="
echo "Vault Raft Snapshot Backup"
echo "Output: $BACKUP_FILE"
echo "========================================="
echo ""
# Check Vault status
if ! vault status &>/dev/null; then
echo "Error: Cannot connect to Vault or Vault is sealed"
exit 1
fi
# Take snapshot
echo "Creating snapshot..."
vault operator raft snapshot save "$BACKUP_FILE"
if [ -f "$BACKUP_FILE" ]; then
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "Snapshot created successfully!"
echo "File: $BACKUP_FILE"
echo "Size: $SIZE"
else
echo "Error: Snapshot creation failed"
exit 1
fi
# Verify snapshot
echo ""
echo "Verifying snapshot..."
vault operator raft snapshot inspect "$BACKUP_FILE" | head -20
# Cleanup old backups (keep last 7)
echo ""
echo "Cleaning up old backups (keeping last 7)..."
ls -t "$OUTPUT_DIR"/vault-snapshot-*.snap 2>/dev/null | tail -n +8 | xargs -r rm -v
echo ""
echo "========================================="
echo "Backup complete"
echo ""
echo "To restore:"
echo " vault operator raft snapshot restore $BACKUP_FILE"
echo "========================================="