#!/usr/bin/env bash set -euo pipefail # AWS S3 backup upload (native AWS CLI) # Uses: aws cli v2 # Env: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, S3_BUCKET BACKUP_FILE="${1:?Usage: $0 }" TIMESTAMP=$(date +%Y%m%d-%H%M%S) KEY="gitea-dump-${TIMESTAMP}.zip" echo "Uploading ${KEY}..." aws s3 cp "$BACKUP_FILE" "s3://${S3_BUCKET}/${KEY}" echo "Upload complete." # Prune backups older than 7 days echo "Pruning backups older than 7 days..." CUTOFF=$(date -d '7 days ago' +%Y-%m-%dT%H:%M:%S 2>/dev/null || date -v-7d +%Y-%m-%dT%H:%M:%S) aws s3api list-objects-v2 --bucket "${S3_BUCKET}" --query "Contents[?LastModified<'${CUTOFF}'].Key" --output text \ | tr '\t' '\n' \ | while read -r key; do [ -n "$key" ] && aws s3 rm "s3://${S3_BUCKET}/${key}" && echo "Deleted: ${key}" done echo "Pruning complete."