From 2cc849024f732d4653a329fac7607a8ebd7abbe1 Mon Sep 17 00:00:00 2001 From: Adam Moussa Date: Tue, 29 Sep 2026 19:37:48 -0400 Subject: [PATCH] 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. --- README.md | 19 ++++++++++--------- terraform/user_data.sh | 6 ++++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 25bff69..9639699 100644 --- a/README.md +++ b/README.md @@ -116,20 +116,21 @@ aws s3api restore-object --bucket forgejo-backups-328440206208 \ Download and restore: ```bash -aws s3 cp s3://forgejo-backups-328440206208/archive//forgejo-.tar.gz /tmp/ +rm -rf /var/lib/forgejo/.restore && mkdir -p /var/lib/forgejo/.restore +aws s3 cp s3://forgejo-backups-011934824531/archive//forgejo-.tar.gz - --no-progress \ + | tar -xz -C /var/lib/forgejo/.restore systemctl stop forgejo -mkdir -p /tmp/forgejo-restore && tar -xzf /tmp/forgejo-.tar.gz -C /tmp/forgejo-restore -cd /tmp/forgejo-restore -cp app.ini /etc/forgejo/app.ini -cp gitea-db.sqlite3 /var/lib/forgejo/data/forgejo.db +cd /var/lib/forgejo/.restore +[ -d data ] && cp -a data/. /var/lib/forgejo/data/ rm -rf /var/lib/forgejo/data/repositories -cp -a repos /var/lib/forgejo/data/repositories -cp -a data/. /var/lib/forgejo/data/ +mkdir -p /var/lib/forgejo/data/repositories +[ -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 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 -rm -rf /tmp/forgejo-restore /tmp/forgejo-.tar.gz +rm -rf /var/lib/forgejo/.restore ``` ### Restore from GCS (disaster recovery) diff --git a/terraform/user_data.sh b/terraform/user_data.sh index 1ad095d..6514584 100644 --- a/terraform/user_data.sh +++ b/terraform/user_data.sh @@ -125,8 +125,10 @@ if [ ! -f /var/lib/forgejo/data/forgejo.db ]; then if [ -d "$RESTORE_DIR/repos" ]; then cp -a "$RESTORE_DIR"/repos/. /var/lib/forgejo/data/repositories/ fi - # Dump sqlite lives at the archive root, not under data/. Copy it last. - cp "$RESTORE_DIR/gitea-db.sqlite3" /var/lib/forgejo/data/forgejo.db + # 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 + fi if [ -d "$RESTORE_DIR/lfs" ]; then mkdir -p /var/lib/forgejo/data/lfs cp -a "$RESTORE_DIR"/lfs/. /var/lib/forgejo/data/lfs/