pgBackRest
shoyu.pgbackrest
A Docker Compose file for pgBackRest alone, generated from the catalog and checked by the safety inspector. No account needed.
Backup and restore tool for PostgreSQL supporting full, differential and incremental backups, parallel transfer, delta restore and point-in-time recovery from archived write-ahead logs.
pgBackRest takes physical backups of a PostgreSQL cluster and continuously archives its write-ahead log, which together allow recovery to any moment within the retention window rather than only to the last backup. Backup and restore run in parallel across processes, and delta restore compares checksums so only changed files are transferred onto an existing data directory. Repositories can live on local disk, on a remote host over SSH, or in object storage, with encryption and compression applied at the repository. Every backup is checksummed and can be verified without a restore, which is what makes the recovery claim testable rather than assumed.
You know it worked when
- The stanza is created and the configuration check passes against the running cluster.
- A full backup completes and appears in the backup listing.
- An incremental backup afterwards transfers substantially less data.
- Verification reports the repository and its backups intact.
- A restore onto a scratch directory produces a cluster that starts and accepts queries.
Known sharp edges
- It requires configuration on the database server itself — archive command, a matching user and filesystem access — so it cannot be bolted on from a separate container without that side prepared.
- Write-ahead log archiving that silently fails leaves the database accumulating unarchived segments until its disk fills and the server stops accepting writes.
- Point-in-time recovery is only as good as the archive, and a gap in archived segments caps recovery at the last continuous point rather than the intended one.
- The tool and the PostgreSQL major version must match across backup and restore hosts, or a restore fails after the data has already been transferred.