Add first module : Gitea app
This commit is contained in:
62
modules/apps/gitea/lib/scripts/restore-backup.sh
Normal file
62
modules/apps/gitea/lib/scripts/restore-backup.sh
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
source /opt/gitea/env.sh
|
||||
|
||||
sudo -u postgres psql <<EOF
|
||||
DO \$\$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT FROM pg_database WHERE datname = '$DB_NAME') THEN
|
||||
EXECUTE 'DROP DATABASE $DB_NAME';
|
||||
END IF;
|
||||
IF EXISTS (SELECT FROM pg_roles WHERE rolname = '$DB_USER') THEN
|
||||
EXECUTE 'DROP ROLE $DB_USER';
|
||||
END IF;
|
||||
END
|
||||
\$\$;
|
||||
EOF
|
||||
|
||||
LATEST_BACKUP=$(ls -1 $GITEA_BACKUPS_DIR/gitea-dump-*.zip 2>/dev/null | sort | tail -n1)
|
||||
|
||||
if [ -n "$LATEST_BACKUP" ] && [ -f "$LATEST_BACKUP" ]; then
|
||||
TMP_DIR=$(mktemp -d)
|
||||
unzip -o $LATEST_BACKUP -d $TMP_DIR
|
||||
[ -d $TMP_DIR/data ] && cp -a $TMP_DIR/data/* /var/lib/gitea/data/
|
||||
[ -d $TMP_DIR/log ] && cp -a $TMP_DIR/log/* /var/lib/gitea/log/
|
||||
[ -d $TMP_DIR/repos ] && cp -aH $TMP_DIR/repos/. /var/lib/gitea/data/repositories/
|
||||
chown -R $GITEA_USER:$GITEA_USER $GITEA_HOME
|
||||
sudo -u postgres psql -d $DB_NAME < $TMP_DIR/gitea-db.sql
|
||||
sudo -u postgres psql -d "$DB_NAME" <<EOF
|
||||
DO \$\$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
-- Tables
|
||||
FOR r IN
|
||||
SELECT schemaname, tablename
|
||||
FROM pg_tables
|
||||
WHERE schemaname = 'public'
|
||||
LOOP
|
||||
EXECUTE format(
|
||||
'ALTER TABLE %I.%I OWNER TO $DB_USER;',
|
||||
r.schemaname,
|
||||
r.tablename
|
||||
);
|
||||
END LOOP;
|
||||
|
||||
-- Sequences
|
||||
FOR r IN
|
||||
SELECT sequence_schema, sequence_name
|
||||
FROM information_schema.sequences
|
||||
WHERE sequence_schema = 'public'
|
||||
LOOP
|
||||
EXECUTE format(
|
||||
'ALTER SEQUENCE %I.%I OWNER TO $DB_USER;',
|
||||
r.sequence_schema,
|
||||
r.sequence_name
|
||||
);
|
||||
END LOOP;
|
||||
END
|
||||
\$\$;
|
||||
EOF
|
||||
fi
|
||||
Reference in New Issue
Block a user