1
0
Fork 0
forge/scripts/restore.sh

31 lines
1 KiB
Bash
Raw Normal View History

#!/bin/bash
# Restore a Forgejo backup tarball from GCS over the live data dir.
# Run on the VM via SSH. Stops the stack, restores, restarts.
#
# Usage: sudo ./restore.sh forgejo-20260507T033000Z.tar.gz
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <backup-filename>" >&2
echo " e.g. $0 forgejo-20260507T033000Z.tar.gz" >&2
exit 1
fi
BACKUP=$1
BUCKET=$(curl -sf -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/project/project-id")-forgejo-backups
read -r -p "About to restore '$BACKUP' from gs://$BUCKET/ over /mnt/disks/forgejo-data/forgejo. Continue? [y/N] " ans
[[ "$ans" == "y" || "$ans" == "Y" ]] || exit 1
systemctl stop forgejo-stack.service
docker run --rm -v /tmp:/tmp google/cloud-sdk:slim \
gsutil cp "gs://${BUCKET}/${BACKUP}" /tmp/
rm -rf /mnt/disks/forgejo-data/forgejo
tar xzf "/tmp/${BACKUP}" -C /mnt/disks/forgejo-data/
rm "/tmp/${BACKUP}"
systemctl start forgejo-stack.service
echo "Restore complete. Check 'docker logs forgejo' for migration output."