#!/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"