59 lines
1.9 KiB
Ruby
59 lines
1.9 KiB
Ruby
namespace :backup do
|
|
desc "Backup Mongo"
|
|
require File.join(Rails.root, 'config', 'initializers', '_load_app_config.rb')
|
|
require 'cloudfiles'
|
|
|
|
task :mongo do
|
|
puts("event=backup status=start type=mongo")
|
|
|
|
if AppConfig[:cloudfiles_username] && AppConfig[:cloudfiles_api_key]
|
|
puts "Logging into Cloud Files"
|
|
|
|
cf = CloudFiles::Connection.new(:username => AppConfig[:cloudfiles_username], :api_key => AppConfig[:cloudfiles_api_key])
|
|
mongo_container = cf.container("Mongo Backup")
|
|
|
|
puts "Dumping Mongo"
|
|
`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)
|
|
|
|
if file.write File.open("/tmp/backup/" + tar_name)
|
|
puts("event=backup status=success type=mongo")
|
|
`rm /tmp/backup/#{tar_name}`
|
|
`rm -rf /tmp/backup/mongo/`
|
|
else
|
|
puts("event=backup status=failure type=mongo")
|
|
end
|
|
else
|
|
puts "Cloudfiles username and api key needed"
|
|
end
|
|
end
|
|
|
|
task :photos do
|
|
puts("event=backup status=start type=photos")
|
|
|
|
if AppConfig[:cloudfiles_username] && AppConfig[:cloudfiles_api_key]
|
|
puts "Logging into Cloud Files"
|
|
|
|
cf = CloudFiles::Connection.new(:username => AppConfig[:cloudfiles_username], :api_key => AppConfig[:cloudfiles_api_key])
|
|
photo_container = cf.container("Photo Backup")
|
|
|
|
tar_name = "photos_#{Time.now.to_i}.tar"
|
|
`tar cfP /tmp/backup/#{tar_name} /usr/local/app/diaspora/public/uploads/images/`
|
|
|
|
file = photo_container.create_object(tar_name)
|
|
|
|
if file.write File.open("/tmp/backup/" + tar_name)
|
|
puts("event=backup status=success type=photos")
|
|
`rm /tmp/backup/#{tar_name}`
|
|
else
|
|
puts("event=backup status=failure type=photos")
|
|
end
|
|
else
|
|
puts "Cloudfiles username and api key needed"
|
|
end
|
|
end
|
|
end
|