Files
Atay-Makhzan-Ops/scripts/backup-gitea.sh
T

46 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
STACK_DIR="${STACK_DIR:-/opt/gitea}"
GITEA_CONTAINER="${GITEA_CONTAINER:-gitea}"
DB_CONTAINER="${DB_CONTAINER:-gitea-db}"
POSTGRES_USER="${POSTGRES_USER:-gitea}"
POSTGRES_DB="${POSTGRES_DB:-gitea}"
cd "$STACK_DIR"
TS="$(date -u +%Y%m%d-%H%M%S)"
BK="$STACK_DIR/backups/$TS"
mkdir -p "$BK"
cp docker-compose.yml "$BK/docker-compose.yml"
if [ -f "$STACK_DIR/gitea-data/gitea/conf/app.ini" ]; then
cp "$STACK_DIR/gitea-data/gitea/conf/app.ini" "$BK/app.ini"
fi
{
echo "backup_utc=$TS"
echo "host=$(hostname)"
echo "date=$(date -u --iso-8601=seconds)"
echo "docker=$(docker --version)"
echo "compose=$(docker compose version 2>/dev/null || true)"
echo "gitea_version=$(docker exec -u git "$GITEA_CONTAINER" gitea --version 2>/dev/null || true)"
docker ps --format '{{.Names}} | {{.Image}} | {{.Status}} | {{.Ports}}'
} > "$BK/metadata.txt"
docker exec -u git "$GITEA_CONTAINER" mkdir -p /data/gitea/backup-tmp
DUMP_NAME="gitea-dump-$TS.zip"
docker exec -u git "$GITEA_CONTAINER" gitea dump \
-c /data/gitea/conf/app.ini \
-w /data/gitea \
-f "/data/gitea/backup-tmp/$DUMP_NAME" \
--quiet
cp "$STACK_DIR/gitea-data/gitea/backup-tmp/$DUMP_NAME" "$BK/$DUMP_NAME"
rm -f "$STACK_DIR/gitea-data/gitea/backup-tmp/$DUMP_NAME"
docker exec "$DB_CONTAINER" pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc > "$BK/gitea-postgres-$TS.dump"
sha256sum "$BK"/* > "$BK/SHA256SUMS"
echo "Backup created: $BK"
du -sh "$BK" "$BK"/*