30 lines
714 B
Bash
30 lines
714 B
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
trap 'echo "Error on line $LINENO while writing Gitea dump" >&2' ERR
|
|
|
|
ensure_writable_dir() {
|
|
local dir="$1"
|
|
mkdir -p "$dir"
|
|
if [[ ! -d "$dir" || ! -w "$dir" ]]; then
|
|
echo "Output directory is not writable: $dir" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
TS="$(date +%F_%H%M%S)"
|
|
OUT="/srv/backups/gitea/dumps"
|
|
ensure_writable_dir "$OUT"
|
|
artifact="$OUT/gitea-dump-$TS.zip"
|
|
|
|
docker exec gitea sh -lc "gitea dump -c /data/gitea/conf/app.ini -f /tmp/gitea-dump-$TS.zip"
|
|
docker cp "gitea:/tmp/gitea-dump-$TS.zip" "$OUT/"
|
|
docker exec gitea rm -f "/tmp/gitea-dump-$TS.zip"
|
|
|
|
if [[ ! -s "$artifact" ]]; then
|
|
echo "Backup artifact missing or empty: $artifact" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Wrote: $artifact"
|