juntekim.com/mist_infra/scripts/backup_k8s_storage_to_s3.sh
2026-02-15 23:14:46 +00:00

80 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# ==================================================
# CONFIG
# ==================================================
K8S_STORAGE_ROOT="/home/kimjunte/k8s_storage"
BACKUP_ROOT="/tmp/k8s-backups"
S3_BUCKET="s3://mist-backups"
AWS_PROFILE_NAME="personal"
AWS_CONFIG_FILE="/home/kimjunte/.aws/config"
AWS_SHARED_CREDENTIALS_FILE="/home/kimjunte/.aws/credentials"
export AWS_PROFILE="$AWS_PROFILE_NAME"
export AWS_CONFIG_FILE
export AWS_SHARED_CREDENTIALS_FILE
DATE="$(date -u +%Y-%m-%d_%H-%M-%S)"
BACKUP_DIR="$BACKUP_ROOT/$DATE"
ARCHIVE_NAME="k8s_storage_$DATE.tar.gz"
ARCHIVE_PATH="$BACKUP_DIR/$ARCHIVE_NAME"
mkdir -p "$BACKUP_DIR"
echo ""
echo "========================================"
echo "=== K8S STORAGE BACKUP STARTED"
echo "=== $(date -u)"
echo "========================================"
echo ""
# ==================================================
# VERIFY AWS IDENTITY
# ==================================================
echo "Using AWS profile: $AWS_PROFILE"
aws sts get-caller-identity
# ==================================================
# CREATE ARCHIVE (EXCLUDE POSTGRES)
# ==================================================
echo "Creating archive..."
sudo tar \
--ignore-failed-read \
--warning=no-file-changed \
--exclude="$K8S_STORAGE_ROOT/postgres" \
-czf "$ARCHIVE_PATH" \
-C /home/kimjunte \
k8s_storage
echo "✔ Archive created:"
du -h "$ARCHIVE_PATH"
# ==================================================
# GENERATE CHECKSUM
# ==================================================
sha256sum "$ARCHIVE_PATH" > "$ARCHIVE_PATH.sha256"
echo "✔ Checksum generated"
# ==================================================
# UPLOAD TO S3
# ==================================================
echo "Uploading to S3..."
aws s3 cp "$ARCHIVE_PATH" "$S3_BUCKET/$DATE/"
aws s3 cp "$ARCHIVE_PATH.sha256" "$S3_BUCKET/$DATE/"
echo "✔ Uploaded to $S3_BUCKET/$DATE/"
# ==================================================
# CLEAN LOCAL TEMP FILES (optional but recommended)
# ==================================================
rm -rf "$BACKUP_DIR"
echo ""
echo "========================================"
echo "=== BACKUP COMPLETED SUCCESSFULLY"
echo "========================================"
echo ""