Usage: - Put in #{RAILS_ROOT}/lib - If you're using S3 to store backups, puts your S3 credentials in /config/s3.yml - Set the values for these constants: + S3 to true if you want backups moved to S3. + BACKUPS for the number of backups you want to save. Once this many have been archived, older ones are deleted for each new backup added. Set to 0 to save everything. + APP for the app name. Used by mysql and S3. - Call with no arguments to back up entire db, or pass in table names as arguments to back up only those tables: ruby backup.rb ruby backup.rb table1 table2 - Restore thusly: gunzip < ~/2011-09-09-07_37_01.sql.gz | mysql -u root phu_production - Cron this script for automated backups. Example crontab entries: backup 'github' and 'twitter' tables every half hour, as root user, piping output to dev/null: */30 * * * * cd /apps/phu/current/lib && ruby backup.rb github twitter >> /dev/null 2>&1 backup entire db every 4 hours, ten minutes after the hour. 10 */4 * * * cd /apps/phu/current/lib && ruby backup.rb backup entire db every night at 3am. * 3 * * * root cd /apps/phu/current/lib && ruby backup.rb