Co-authored-by: Danijel Simeunovic <danijel.simeunovic@fortedigital.com> Reviewed-on: #14
37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
#!/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 <backup-file>}"
|
|
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."
|