mongo cloudfiles backup task

This commit is contained in:
zhitomirskiyi 2010-11-19 10:57:12 -08:00
parent 50eb0a9242
commit 481204a157
3 changed files with 27 additions and 3 deletions

View file

@ -47,6 +47,10 @@ gem 'mini_magick'
gem 'aws' gem 'aws'
gem 'fastercsv', :require => false gem 'fastercsv', :require => false
gem 'jammit' gem 'jammit'
#Backups
gem "cloudfiles", :require => false
group :test, :development do group :test, :development do
gem 'factory_girl_rails' gem 'factory_girl_rails'
gem 'ruby-debug19' if RUBY_VERSION.include? "1.9" gem 'ruby-debug19' if RUBY_VERSION.include? "1.9"

View file

@ -67,6 +67,12 @@ default:
#google analytics key, if false, it won't include the javascript #google analytics key, if false, it won't include the javascript
google_a_site: false google_a_site: false
#cloudfiles username and api-key, used for backups
cloudfiles_username: 'example'
cloudfiles_api_key: 'abc123'
development: development:
test: test:

View file

@ -1,9 +1,23 @@
namespace :backup do namespace :backup do
desc "Backup Mongo" desc "Backup Mongo"
task :mongo do task :mongo do
cf = CloudFiles::Connection.new(:username => "", :api_key => "") require 'cloudfiles'
if APP_CONFIG[:cloudfiles_username] && APP_CONFIG[:cloudfiles_api_key]
cf = CloudFiles::Connection.new(:username => APP_CONFIG[:cloudfiles_username], :api_key => APP_CONFIG[:cloudfiles_api_key])
mongo_container = cf.container("Mongo Backup") mongo_container = cf.container("Mongo Backup")
file = cont.create_object("test.txt")
file.write "Things" `mongodump -o /tmp/backup/mongo`
tar_name = "mongo_#{Time.now.to_i}.tar"
`tar cfP /tmp/backup/#{tar_name} /tmp/backup/mongo`
file = mongo_container.create_object(tar_name)
success = file.write File.open("/tmp/backup/" + tar_name)
if success
`rm /tmp/backup/#{tar_name}`
`rm -rf /tmp/backup/mongo/`
end
else
puts "Cloudfiles username and api key needed"
end
end end
end end