74de572160c83a5167b0996ddbf15c6b271eef8b
DbDumper reads every prefixed table through the Nextcloud connection in one REPEATABLE READ (read-only) transaction, with keyset pagination on the primary key, and streams each table as JSON lines into its own blob stream (BlobWriter), so unchanged tables are deduplicated. Restore replaces table contents in one transaction and resets PostgreSQL sequences. Spike C (NC34, PostgreSQL, standard image without pg_dump/pgsql ext): 300k-row table with bytea: dump 6.3s / 50 MiB peak, 94 MiB JSON -> 20 MiB stored; unchanged second dump stores nothing; restore makes every table checksum-identical and all 110 sequences continue above the maximum.
NG Backup
Encrypted, incremental backups of Nextcloud with restore from the web interface. Works without shell access: no external programs, no extra PHP extensions beyond sodium.
Status: phase 0 (prototype). Not usable yet. See PLAN.md for the design.
License: AGPL-3.0-or-later.