The boilerplate includes ready-to-use scripts for database backup and restore operations.
Create database backups using the included script:
# Backup production database
./db_backup.sh env=prod
# Backup development database
./db_backup.sh env=devThe script (db_backup.sh):
.env.production or .env.development~/backup/sql/backup_prod_2024-12-01_14-30-25.dumppg_dump with custom format for efficient compressionBackup file naming:
backup_prod_YYYY-MM-DD_HH-MM-SS.dump - Production backupsbackup_dev_YYYY-MM-DD_HH-MM-SS.dump - Development backups./db_backup.sh env=prod
# Output:
# Environnement: prod
# Base de données: postgres://user:pass@host:5432/db
# Continuer la sauvegarde? (yes/no): yes
# ... pg_dump output ...
# Sauvegarde terminée pour l'environnement prod. fichier ~/backup/sql/backup_prod_2024-12-01_14-30-25.dump créé.Restore database from backup files:
# Restore to development database
./db_restore.sh env=dev ~/backup/sql/backup_prod_2024-12-01_14-30-25.dump
# Restore to production database (requires manual edit)
./db_restore.sh env=prod ~/backup/sql/backup_prod_2024-12-01_14-30-25.dumpProduction protection:
db_restore.shComplete database reset:
./db_restore.sh env=dev ~/backup/sql/backup_prod_2024-12-01_14-30-25.dump
# Output:
# Environnement: dev
# Base de données: postgres://localhost:5432/saas_dev
# Fichier dump: ~/backup/sql/backup_prod_2024-12-01_14-30-25.dump
# Vous êtes sur le point de restaurer la base de données dans l'environnement 'dev'.
# Cela écrasera toutes les données existantes !
# Voulez-vous continuer ? (yes/no): yes
# Suppression des tables existantes...
# Restauration en cours...
# ... pg_restore output ...
# Configuration du search_path...
# Restauration terminée avec succès.Schedule regular backups:
# Create weekly production backup
./db_backup.sh env=prod
# Create daily development backup
./db_backup.sh env=devBackup before major changes:
# Before deploying new features
./db_backup.sh env=prod
# Before running migrations
./db_backup.sh env=devRestore to specific point in time:
List available backups:
ls -la ~/backup/sql/
# backup_prod_2024-12-01_09-00-00.dump # Morning backup
# backup_prod_2024-12-01_14-30-25.dump # Afternoon backup
# backup_prod_2024-12-01_21-00-00.dump # Evening backupChoose closest backup to desired time:
# Restore to 14:30 state
./db_restore.sh env=dev ~/backup/sql/backup_prod_2024-12-01_14-30-25.dumpSync development with production data:
# 1. Backup production
./db_backup.sh env=prod
# 2. Restore to development
./db_restore.sh env=dev ~/backup/sql/backup_prod_2024-12-01_14-30-25.dumpCreate test environment with production data:
# Backup current state
./db_backup.sh env=dev
# Restore production data for testing
./db_restore.sh env=dev ~/backup/sql/backup_prod_2024-12-01_14-30-25.dump
# Test your changes...
# Restore original development data
./db_restore.sh env=dev ~/backup/sql/backup_dev_2024-12-01_13-00-00.dumpBackups are stored in:
~/backup/sql/backup_prod_*.dump - Production backups~/backup/sql/backup_dev_*.dump - Development backupsManage backup storage:
# List backups by date
ls -lt ~/backup/sql/
# Remove old backups (manually)
rm ~/backup/sql/backup_dev_2024-11-*.dump
# Keep only last 10 backups
ls -t ~/backup/sql/backup_prod_*.dump | tail -n +11 | xargs rmThe backup and restore scripts provide a simple, reliable way to manage your database snapshots and recover to any point in time when needed.