http://www.railsgeek.com/2009/8/11/backup-shell-script-for-my-rails-applications
# Take care about folders structure for the usual script workflow:
# /home/demo/backup/
# /home/demo/backup/redmine_folder/
# /home/demo/backup/redmine_folder/script.sh - the following script should be landing here
# /home/demo/backup/redmine_folder/files
# /home/demo/public_html/
# /home/demo/public_html/redmine_folder
#
# crontab -e -u demo
# 0 20 * * * /home/demo/backup/redmine_folder/script.sh
# ---BACKUP SCRIPT---
#!/bin/sh
folder=redmine_folder
db=redmine_production
# Change directory and remove files older than 30days
cd ~/backup/$folder/files
find . -mtime +30 |xargs rm
# Database
file01=$folder.db_$(date +"%Y_%m_%d_%H-%M")
mysqldump -u user_name -pmy_sycret_password --single-transaction $db | gzip -c > $file01.gz
# App
file02=$folder.app_$(date +"%Y_%m_%d_%H-%M")
tar czf ~/backup/$folder/files/$file02.tgz ~/public_html/$folder > /dev/null
# S3 sync
ruby ~/backup/s3sync/s3cmd.rb put s3bucket:backup/$folder/db/$file01.gz $file01.gz
ruby ~/backup/s3sync/s3cmd.rb put s3bucket:backup/$folder/app/$file02.tgz $file02.tgz
# ---BACKUP SCRIPT---