client
boring-backup.rb
The easiest way to back up PostgreSQL databases for small projects
boring-backup is a gem with a single purpose — back up a database and upload it somewhere. It is fast and efficient: it doesn't write to disk, so it can run in environments with limited disk space.
$ bundle add boring-backup
$ bundle exec bb installEdit config/initializers/boring_backup.rb:
BoringBackup.configure do |config|
config.sentinel_key = '12345678-abcd-1234-abcd-abcdef123456'
config.register(:s3) do |store|
store.bucket = Settings.aws.bucket
store.region = Settings.aws.region
store.access_key_id = Settings.aws.access_key_id
store.secret_access_key = Settings.aws.secret_access_key
end
endYou can trigger the backup from a recurring job or run it manually.
# config/recurring.yml
production:
boring_backup:
class: BoringBackup::BackupJob
schedule: every day at 3am$ bundle exec bb backup
Boring Backup db_name
✓ s3 2.5 MB in 1.8s → database/db_name/2026/07/16-03-00-12.dump
Backed up to 1 store(s).observer
boring-backup Sentinel
A watchdog that notifies you when backups stop running
Your backups run on a schedule, and when they quietly start failing, nothing tells you.
boring-backup Sentinel is the outside observer that keeps watch. The boring-backup gem notifies the Sentinel after every run. If a notification
doesn't arrive on time, the Sentinel alerts you (webhook/slack).
Why it can't live in your app
A process that died cannot report that it died. Whatever runs your backup is the last thing you should trust to tell you the backup stopped. That's the whole reason to watch from outside.
Other features
- Size anomaly detection — get alerted if your database size suddenly changes.
- That's all. No need to overcomplicate simple things.