[add] added backup script

This commit is contained in:
Daveanand Mannie
2026-02-21 21:44:09 -05:00
parent e12d0038ff
commit 12cd678ba0

73
backup.sh Normal file
View File

@@ -0,0 +1,73 @@
#!/usr/bin/env bash
set -euo pipefail
# =============================================================================
# Gitea Backup Script for Dokploy
# =============================================================================
#
# Creates a database dump and file archive from the running Gitea containers.
#
# Usage:
# chmod +x backup.sh
# ./backup.sh
# ./backup.sh /custom/backup/dir
#
# =============================================================================
# --- Configuration ---
GITEA_CONTAINER="gitea"
DB_CONTAINER="gitea-db"
DB_USER="gitea"
DB_NAME="gitea"
BACKUP_DIR="${1:-$HOME/gitea-backups}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# --- Dump database ---
echo "=== Dumping database ==="
docker exec "$DB_CONTAINER" pg_dump \
-U "$DB_USER" -d "$DB_NAME" \
--no-owner --no-acl \
-F c -f /tmp/gitea_db_backup.dump
docker cp "$DB_CONTAINER":/tmp/gitea_db_backup.dump "$BACKUP_DIR/gitea_db_${TIMESTAMP}.dump"
docker exec "$DB_CONTAINER" rm /tmp/gitea_db_backup.dump
echo "Database dumped to: $BACKUP_DIR/gitea_db_${TIMESTAMP}.dump"
# --- Backup files ---
echo ""
echo "=== Backing up Gitea files ==="
docker exec "$GITEA_CONTAINER" bash -c '
cd /data
tar czf /tmp/gitea_files_backup.tar.gz \
git/repositories \
git/lfs \
gitea/avatars \
gitea/attachments \
git/.ssh \
2>/dev/null || true
'
docker cp "$GITEA_CONTAINER":/tmp/gitea_files_backup.tar.gz "$BACKUP_DIR/gitea_files_${TIMESTAMP}.tar.gz"
docker exec "$GITEA_CONTAINER" rm /tmp/gitea_files_backup.tar.gz
echo "Files backed up to: $BACKUP_DIR/gitea_files_${TIMESTAMP}.tar.gz"
# --- Backup app.ini ---
echo ""
echo "=== Backing up app.ini ==="
docker cp "$GITEA_CONTAINER":/data/gitea/conf/app.ini "$BACKUP_DIR/app_${TIMESTAMP}.ini"
echo "Config backed up to: $BACKUP_DIR/app_${TIMESTAMP}.ini"
# --- Summary ---
echo ""
echo "=== Backup complete ==="
echo "Files:"
ls -lh "$BACKUP_DIR"/*"${TIMESTAMP}"*
echo ""
echo "To restore on a fresh Dokploy instance:"
echo " 1. Deploy the Gitea compose stack"
echo " 2. Copy the backup files to ~/ on the server"
echo " 3. Rename them to gitea_db_backup.dump, gitea_files_backup.tar.gz, app.ini"
echo " 4. Run ./restore.sh"