Back Up the Database Every Night
We don't have database backups yet. This adds a script that dumps the app database, compresses it, and keeps a week of copies in /var/backups/app, plus a cron entry that runs it at midnight. I ran it by hand on staging and the file showed up with today's date.
Ascripts/backup.sh1 of 2
Files Changed
scripts/
deploy/
scripts/backup.sh
Shell · Click a line number to comment · Tap a line to comment@@ -0,0 +1,20 @@
Added: #!/bin/bash
Added: # Nightly backup of the app database to /var/backups/app.
Added:
Added: BACKUP_DIR=/var/backups/app
Added: DB_NAME=app
Added: DB_USER=backup
Added: DB_PASS=Tr0ub4dor-backup-7
Added: STAMP=$(date +%Y-%m-%d)
Added: FILE=$BACKUP_DIR/$DB_NAME-$STAMP.sql.gz
Added:
Added: mkdir -p $BACKUP_DIR
Added:
Added: mysqldump --user=$DB_USER --password=$DB_PASS \
Added: --databases $DB_NAME \
Added: | gzip > $FILE
Added:
Added: # Keep a week of backups.
Added: find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
Added:
Added: echo "Backup finished: $FILE"
deploy/crontab
Shell · Click a line number to comment · Tap a line to comment@@ -1,4 +1,5 @@
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
*/5 * * * * app /opt/app/bin/send-reminders
Added: 0 0 * * * root /opt/app/scripts/backup.sh > /dev/null 2>&1