46 lines
1.4 KiB
Bash
Executable File
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"/*
|