fix(terraform): accept dumps that already contain data/forgejo.db

Today's archive has no gitea-db.sqlite3 at the root. Copy that file only when it is present.
This commit is contained in:
Adam Moussa 2026-09-29 19:37:48 -04:00
parent 30f4b54052
commit 2cc849024f
No known key found for this signature in database
2 changed files with 14 additions and 11 deletions

View file

@ -116,20 +116,21 @@ aws s3api restore-object --bucket forgejo-backups-328440206208 \
Download and restore: Download and restore:
```bash ```bash
aws s3 cp s3://forgejo-backups-328440206208/archive/<date>/forgejo-<date>.tar.gz /tmp/ rm -rf /var/lib/forgejo/.restore && mkdir -p /var/lib/forgejo/.restore
aws s3 cp s3://forgejo-backups-011934824531/archive/<date>/forgejo-<date>.tar.gz - --no-progress \
| tar -xz -C /var/lib/forgejo/.restore
systemctl stop forgejo systemctl stop forgejo
mkdir -p /tmp/forgejo-restore && tar -xzf /tmp/forgejo-<date>.tar.gz -C /tmp/forgejo-restore cd /var/lib/forgejo/.restore
cd /tmp/forgejo-restore [ -d data ] && cp -a data/. /var/lib/forgejo/data/
cp app.ini /etc/forgejo/app.ini
cp gitea-db.sqlite3 /var/lib/forgejo/data/forgejo.db
rm -rf /var/lib/forgejo/data/repositories rm -rf /var/lib/forgejo/data/repositories
cp -a repos /var/lib/forgejo/data/repositories mkdir -p /var/lib/forgejo/data/repositories
cp -a data/. /var/lib/forgejo/data/ [ -d repos ] && cp -a repos/. /var/lib/forgejo/data/repositories/
[ -f gitea-db.sqlite3 ] && cp gitea-db.sqlite3 /var/lib/forgejo/data/forgejo.db
[ -d lfs ] && cp -a lfs/. /var/lib/forgejo/data/lfs/ [ -d lfs ] && cp -a lfs/. /var/lib/forgejo/data/lfs/
[ -d custom ] && cp -a custom/. /var/lib/forgejo/custom/ [ -d custom ] && cp -a custom/. /var/lib/forgejo/custom/
chown -R forgejo:forgejo /var/lib/forgejo /etc/forgejo/app.ini chown -R forgejo:forgejo /var/lib/forgejo
systemctl start forgejo systemctl start forgejo
rm -rf /tmp/forgejo-restore /tmp/forgejo-<date>.tar.gz rm -rf /var/lib/forgejo/.restore
``` ```
### Restore from GCS (disaster recovery) ### Restore from GCS (disaster recovery)

View file

@ -125,8 +125,10 @@ if [ ! -f /var/lib/forgejo/data/forgejo.db ]; then
if [ -d "$RESTORE_DIR/repos" ]; then if [ -d "$RESTORE_DIR/repos" ]; then
cp -a "$RESTORE_DIR"/repos/. /var/lib/forgejo/data/repositories/ cp -a "$RESTORE_DIR"/repos/. /var/lib/forgejo/data/repositories/
fi fi
# Dump sqlite lives at the archive root, not under data/. Copy it last. # Older dumps keep sqlite at the archive root. Current dumps already have data/forgejo.db.
if [ -f "$RESTORE_DIR/gitea-db.sqlite3" ]; then
cp "$RESTORE_DIR/gitea-db.sqlite3" /var/lib/forgejo/data/forgejo.db cp "$RESTORE_DIR/gitea-db.sqlite3" /var/lib/forgejo/data/forgejo.db
fi
if [ -d "$RESTORE_DIR/lfs" ]; then if [ -d "$RESTORE_DIR/lfs" ]; then
mkdir -p /var/lib/forgejo/data/lfs mkdir -p /var/lib/forgejo/data/lfs
cp -a "$RESTORE_DIR"/lfs/. /var/lib/forgejo/data/lfs/ cp -a "$RESTORE_DIR"/lfs/. /var/lib/forgejo/data/lfs/