Sweety Backy
Simple mechanism to configure and execute backups of folders and MySQL DBs and store them in local folder or S3 bucket.
State
This is a really beta version which is working in my servers actually without problems but you have to use it under your own risk.
Other possibilities
Please take a look of other Ruby backups gems:
How install
gem install 'sweety_backy'
How to use it
sweety_backy <config_file>
Config file
It is a yaml file with all this attributes
paths: <array of folder paths>
databases: <array of database names>
yearly: <quantity of yearly backups>
monthly: <quantity of monthly backups>
weekly: <quantity of weekly backups>
daily: <quantity of daily backups>
database_user: <database user with read privileges of all datases>
database_pass: <database user password>
storage_system: { 's3' | 'local' }
local_opts: (only if the storage_system is 'local')
path: <absoulte path to the root folder of the backups>
s3_opts: (only if the storage_system is 's3')
bucket: <bucket name>
path: <bucket path where the backups will be stored><
passwd_file: <path to the S3 credentials>
S3 credentials file
It is a yaml file with two keys with the S3 credentials:
access_key_id: "XXX"
secret_access_key: "YYY"
Example
S3 config example
# ~/.s3.passwd
access_key_id: "XXX"
secret_access_key: "YYY"
SweetyBacky config example
# ~/.sweety_backy.conf
paths: [ "/Users/fguillen/Develop/Brico", "/Users/fguillen/Develop/Arduino" ]
databases: [ "test", "mysql" ]
yearly: 1
monthly: 2
weekly: 3
daily: 4
database_user: 'root'
database_pass: ''
storage_system: 's3'
s3_opts:
bucket: 'sweety_backy'
path: 'fguillen'
passwd_file: '~/.s3.passwd'
Execute
sweety_backy ~/.sweety_backy.conf
Result
This will generate a bunch of backups in the sweety_backy bucket like these ones:
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Arduino.20110626.weekly.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Arduino.20110703.weekly.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Arduino.20110704.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Arduino.20110705.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Arduino.20110706.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Arduino.20110707.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Brico.20110626.weekly.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Brico.20110703.weekly.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Brico.20110704.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Brico.20110705.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Brico.20110706.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/files/Users.fguillen.Develop.Brico.20110707.daily.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/test.20110626.weekly.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/test.20110703.weekly.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/test.20110704.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/test.20110705.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/test.20110706.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/test.20110707.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/mysql.20110626.weekly.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/mysql.20110703.weekly.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/mysql.20110704.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/mysql.20110705.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/mysql.20110706.daily.sql.tar.gz
https://s3.amazonaws.com/sweety_backy/fguillen/databases/mysql.20110707.daily.sql.tar.gz
... and so on.
Cron execution example
# every day at 02:00 am
00 02 * * * sweety_backy /home/fguillen/.sweety_backy.conf >> /var/log/sweety_backy.log 2>&1
License
MIT License. (c) 2011 Fernando Guillen (http://fernandoguillen.info).