An Odoo database contains the company's entire digital life: customers, orders, invoices, inventory, history. Lose it and you lose everything. Backups aren't optional. They're business-critical.
Database backup
pg_dump -Fc arcgruppen.se > backup_$(date +%Y%m%d).dump. Custom format (-Fc) provides compression and selective restore. Schedule with cron, once a day minimum. Keep 7 daily, 4 weekly, 12 monthly.
Filestore
Images, attachments, report data. Located in /var/lib/odoo/filestore/ (or your configured path). Copy the entire folder. rsync to external server: rsync -avz /var/lib/odoo/filestore/ backup-server:/backups/odoo-filestore/.
Offsite
Backups on the same server protect against software errors but not hardware failure, fire, or ransomware. Sync to an external location: Amazon S3, Backblaze B2, Hetzner Storage Box. rclone makes it easy. The cost is negligible compared to the risk.
Test restore
A backup you haven't tested restoring isn't a backup. Test quarterly: pg_restore -d test_db backup.dump. Verify data is complete, filestore files work, the system starts correctly.
Disaster recovery plan
Document: where are backups? Who has access? How long does a restore take? What's RPO (how much data can we lose) and RTO (how fast must we be back up)? It doesn't need to be an advanced document; it needs to be a clear plan.
Docker-specific
If Odoo runs in Docker: PostgreSQL data in a named volume. Backup via docker exec db pg_dump.... Filestore via docker cp or a shared volume. Automate with a script that runs both and syncs offsite.