80 lines
2.2 KiB
Bash
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 ""
|