1
0
Fork 0
forge/scripts/restore.sh
Jason Hall 4dc1b58f2f initial commit
Signed-off-by: Jason Hall <imjasonh@gmail.com>
2026-05-07 20:02:59 -04:00

30 lines
1 KiB
Bash
Executable file

#!/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."