s3-backup
Easy tar-based backups to S3, with backup rotation, cleanup helpers, and pre-/post-backup hooks.
Install
sudo gem install s3-backup
Easy Example
b = S3Backup.new('vps-backups') # Init with the name of bucket to push to; keys handled by AWSCredentials
b.files << '/usr/local/important.data'
b.files << '/usr/local/more/important.data'
b.files << '/usr/local/secrets'
b.run
This will:
-
Create a .tar.gz file including everything in
files
-
Push tar to S3
-
Delete old backups (keeps 5 by default, but you can change
copies_to_keep
) -
Remove scratch files
Hooks
S3Backup also includes a before_backup
and after_backup
hook to take care of preparing dumpfiles and restarting services. These are just blocks of code.
Also useful, files_to_cleanup
contains a list of files to cleanup post-backup. You can add your scratch files to this list and they’ll be deleted after each run, even if an error is encountered.
tar_excludes
is an array of patterns for tar to exclude – for example, “*.log”
For example:
b = S3Backup.new('vps-backups')
b.before_backup do
`mysqldump -h locahost important_data > /tmp/important_data.sql`
raise "mysqdump failed" if !$?.success?
b.files_to_cleanup << '/tmp/important_data.sql'
b.files << '/tmp/important_data.sql'
end
b.run
You’ll find additional opts in the S3Backup docs.
Suggested deployment
Create a ruby script, and add to your crontab. Don’t forget to 2>&1 the output and set a MAILTO
to get error notices.
Notes
-
This uses AWSCredentials to manage AWS keys.
-
This doesn’t work on Windows.
Copyright
Copyright © 2010 Ben Koski. See LICENSE for details.