#!/usr/bin/env bash set -euo pipefail # GCP Cloud Storage backup upload # Uses: gsutil (gcloud SDK) # Env: GCS_BUCKET (e.g. gs://my-bucket) BACKUP_FILE="${1:?Usage: $0 }" TIMESTAMP=$(date +%Y%m%d-%H%M%S) KEY="gitea-dump-${TIMESTAMP}.zip" echo "Uploading ${KEY}..." gsutil cp "$BACKUP_FILE" "${GCS_BUCKET}/${KEY}" echo "Upload complete." # Prune backups older than 7 days — GCS lifecycle rules are preferred, # but this works as a manual fallback echo "Pruning backups older than 7 days..." CUTOFF=$(date -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -v-7d +%Y-%m-%dT%H:%M:%SZ) gsutil ls -l "${GCS_BUCKET}/" \ | grep 'gitea-dump-' \ | while read -r size date name; do if [[ "$date" < "$CUTOFF" ]]; then gsutil rm "$name" && echo "Deleted: ${name}" fi done echo "Pruning complete."