Skip to content

Backup & Restore

Terminal window
# Full database backup
pg_dump -U rcommerce -h localhost rcommerce > backup.sql
# With timestamp
pg_dump -U rcommerce -h localhost rcommerce > backup_$(date +%Y%m%d_%H%M%S).sql

Create a cron job:

/etc/cron.daily/rcommerce-backup
#!/bin/bash
pg_dump -U rcommerce -h localhost rcommerce | gzip > /backups/rcommerce_$(date +%Y%m%d).sql.gz
find /backups -name "rcommerce_*.sql.gz" -mtime +30 -delete
Terminal window
# Restore from backup
psql -U rcommerce -h localhost rcommerce < backup.sql
# Restore from compressed backup
gunzip < backup.sql.gz | psql -U rcommerce -h localhost rcommerce

Back up the uploads directory:

Terminal window
tar -czf uploads_$(date +%Y%m%d).tar.gz /var/lib/rcommerce/uploads/
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/rcommerce"
# Database
pg_dump -U rcommerce rcommerce | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
# Uploads
tar -czf "$BACKUP_DIR/uploads_$DATE.tar.gz" /var/lib/rcommerce/uploads/
# Config
cp /etc/rcommerce/config.toml "$BACKUP_DIR/config_$DATE.toml"
# Cleanup old backups (keep 30 days)
find "$BACKUP_DIR" -mtime +30 -delete

Enable WAL archiving in PostgreSQL for point-in-time recovery:

# postgresql.conf
archive_mode = on
archive_command = 'cp %p /archive/%f'