mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
760 B
23 lines
760 B
#!/usr/bin/env bash
|
|
# Daily backup of Postgres + attachments. Run from /opt/docuseal repo root.
|
|
# Suggested cron: 0 2 * * * /opt/docuseal/deploy/backup.sh >> /var/log/docuseal-backup.log 2>&1
|
|
|
|
set -euo pipefail
|
|
|
|
BACKUP_ROOT="${BACKUP_ROOT:-/opt/docuseal/backups}"
|
|
RETAIN_DAYS="${RETAIN_DAYS:-14}"
|
|
STAMP=$(date -u +%Y%m%d-%H%M%S)
|
|
DEST="$BACKUP_ROOT/$STAMP"
|
|
|
|
mkdir -p "$DEST"
|
|
|
|
docker compose exec -T postgres \
|
|
pg_dump -U "${POSTGRES_USER:-docuseal}" -d "${POSTGRES_DB:-docuseal}" -Fc \
|
|
> "$DEST/postgres.dump"
|
|
|
|
tar czf "$DEST/attachments.tgz" -C /opt/docuseal data 2>/dev/null || true
|
|
|
|
find "$BACKUP_ROOT" -mindepth 1 -maxdepth 1 -type d -mtime +"$RETAIN_DAYS" -exec rm -rf {} +
|
|
|
|
echo "[$(date -u +%FT%TZ)] backup ok -> $DEST ($(du -sh "$DEST" | cut -f1))"
|