42 lines
960 B
Bash
42 lines
960 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# ----------------------------------------------------------
|
|
# Weekly full backup of all Kubernetes PV data
|
|
# ----------------------------------------------------------
|
|
|
|
SOURCE_DIR="/k8s_storage"
|
|
TMP_DIR="/tmp/mist-backups"
|
|
BUCKET="mist-backups"
|
|
|
|
DATE="$(date -u +%Y-%m-%d)"
|
|
TIMESTAMP="$(date -u +%Y-%m-%d_%H-%M-%S)"
|
|
HOST="$(hostname)"
|
|
|
|
ARCHIVE_NAME="k8s_storage_${HOST}_${TIMESTAMP}.tar.gz"
|
|
ARCHIVE_PATH="${TMP_DIR}/${ARCHIVE_NAME}"
|
|
|
|
echo "=== Mist weekly PV backup ==="
|
|
echo "Source: ${SOURCE_DIR}"
|
|
echo "Archive: ${ARCHIVE_PATH}"
|
|
echo "Bucket: s3://${BUCKET}/${DATE}/"
|
|
|
|
mkdir -p "${TMP_DIR}"
|
|
|
|
echo "→ Creating tarball"
|
|
tar \
|
|
--numeric-owner \
|
|
--xattrs \
|
|
--acls \
|
|
-czf "${ARCHIVE_PATH}" \
|
|
-C "${SOURCE_DIR}" .
|
|
|
|
echo "→ Uploading to S3"
|
|
aws s3 cp \
|
|
"${ARCHIVE_PATH}" \
|
|
"s3://${BUCKET}/${DATE}/${ARCHIVE_NAME}"
|
|
|
|
echo "→ Cleaning up local temp"
|
|
rm -f "${ARCHIVE_PATH}"
|
|
|
|
echo "✅ Backup complete"
|