[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