#!/usr/bin/env bash set -euo pipefail # Azure Blob Storage backup upload # Uses: az cli # Env: AZURE_STORAGE_ACCOUNT, AZURE_STORAGE_KEY, AZURE_CONTAINER BACKUP_FILE="${1:?Usage: $0 }" TIMESTAMP=$(date +%Y%m%d-%H%M%S) KEY="gitea-dump-${TIMESTAMP}.zip" echo "Uploading ${KEY}..." az storage blob upload \ --account-name "${AZURE_STORAGE_ACCOUNT}" \ --account-key "${AZURE_STORAGE_KEY}" \ --container-name "${AZURE_CONTAINER}" \ --name "${KEY}" \ --file "$BACKUP_FILE" \ --overwrite 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:%SZ 2>/dev/null || date -v-7d +%Y-%m-%dT%H:%M:%SZ) az storage blob list \ --account-name "${AZURE_STORAGE_ACCOUNT}" \ --account-key "${AZURE_STORAGE_KEY}" \ --container-name "${AZURE_CONTAINER}" \ --query "[?properties.lastModified<'${CUTOFF}'].name" -o tsv \ | while read -r name; do [ -n "$name" ] && az storage blob delete \ --account-name "${AZURE_STORAGE_ACCOUNT}" \ --account-key "${AZURE_STORAGE_KEY}" \ --container-name "${AZURE_CONTAINER}" \ --name "$name" && echo "Deleted: ${name}" done echo "Pruning complete."