[add] added backup script
This commit is contained in:
73
backup.sh
Normal file
73
backup.sh
Normal 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"
|
||||
Reference in New Issue
Block a user