For DevOps engineers and backend engineers responsible for database backup and recovery at Indian businesses.
Why Object Storage Is the Right Backup Target
Database backups stored on the same server as the database are not backups. They are copies that will be destroyed alongside the original in every failure scenario that actually matters — disk failure, server compromise, data centre incident.
Object storage provides everything a backup target needs: physical separation from the source, durability through redundant storage, infinite scalability without disk management, and accessibility from any server for recovery. At Rs.1.50/GB-month on IBEE, storing 1 TB of database backups costs Rs.1,536 per month — a small fraction of the cost of the data loss event those backups exist to prevent.
This guide covers three tools for backing up to IBEE's S3-compatible storage.
Tool 1 — pgBackRest for PostgreSQL
pgBackRest is the production-grade backup tool for PostgreSQL. It supports full, differential, and incremental backups directly to S3-compatible storage, with parallel transfer, compression, encryption, and point-in-time recovery via WAL archiving.
Configuration
pgBackRest's configuration lives in /etc/pgbackrest/pgbackrest.conf. The relevant section for IBEE:
The repo1-s3-uri-style=path setting is important — it tells pgBackRest to use path-style URLs rather than virtual-hosted URLs, which is required for non-AWS S3-compatible providers.
Initial backup
WAL archiving for point-in-time recovery
Add the following to your postgresql.conf to enable continuous WAL archiving to IBEE:
With WAL archiving enabled, you can restore to any point in time — not just backup snapshots. A transaction committed five minutes before a data corruption event can be recovered.
Retention policy
The repo1-retention-full=4 setting in the configuration keeps the last 4 full backups. repo1-retention-diff=14 keeps 14 days of differential backups. Adjust to match your recovery time objectives and budget.
Tool 2 — Restic for General-Purpose Backups
Restic is a fast, encrypted, deduplicated backup tool that works with any S3-compatible storage. It is appropriate for backing up application directories, generated files, uploaded user content, and the output of database dump tools (pg_dump, mysqldump, mongodump).
Configuration
Restic uses environment variables for S3 credentials:
Initialise the repository
Back up a directory
Back up a PostgreSQL dump
Piping pg_dump directly into Restic avoids writing the dump to disk first — useful when the disk is full or when you want to avoid leaving unencrypted dump files on the server.
Retention policy
This keeps daily backups for 7 days, weekly for 4 weeks, and monthly for 6 months. Restic's deduplication means that retaining many snapshots costs significantly less than storing multiple full copies.
Restore
Tool 3 — rclone for Directory Sync
rclone is the Swiss Army knife of cloud storage transfers. It is less specialised than pgBackRest or Restic — no deduplication, no encryption at the rclone layer — but it is the simplest tool for syncing a directory of existing backup files to IBEE, and it works with any directory structure.
Configuration
Run rclone config and create a remote named ibee:
Sync a backup directory
Copy with a date prefix
Verify
rclone is appropriate when you already have a backup tool generating files locally and want to add off-site cloud storage without replacing the existing backup workflow. It is also the simplest option for syncing configuration backups, application state exports, and other non-database data to object storage.
Backup Verification
A backup that has never been tested is not a backup — it is a hope. Build restore verification into your backup workflow.
For pgBackRest:
This performs a complete restore to a standby location and starts PostgreSQL in standby mode, confirming the backup is usable without affecting the primary server.
For Restic:
This verifies the integrity of the repository metadata and optionally verifies the data segments.
Test a full restore to a separate server at least monthly. The first time you test a restore should not be during an actual recovery incident.
Retention and Cost Management
Object storage makes it economically practical to keep backups for longer than most teams do with disk-based backup systems. At Rs.1.50/GB-month on IBEE, retaining 12 months of backups for a 500 GB database costs approximately Rs.9,000 per month. The cost of a data loss event that those 12 months of backups could prevent is orders of magnitude higher.
Restic's deduplication means the cost of incremental backups is proportionate to the volume of data that actually changed, not the total database size. A 500 GB database that changes 5 GB per day has daily backup storage costs proportional to 5 GB, not 500 GB.

