Skip to content

Instantly share code, notes, and snippets.

@alexandrebini
Created October 13, 2010 01:18
Show Gist options
  • Save alexandrebini/623233 to your computer and use it in GitHub Desktop.
Save alexandrebini/623233 to your computer and use it in GitHub Desktop.
namespace :backup do
task :set_name do
set :backup_folder, "/tmp"
set :backup_name, "#{application}-#{DateTime.now.strftime('%Y-%m-%d_%H-%M-%S')}"
set :backup_path, "#{backup_folder}/#{backup_name}"
end
task :db do
yml = YAML.load_file("#{repository}/config/database.yml")
file = "#{backup_name}_database"
tar = "#{backup_folder}/#{file}.tar.gz"
run "mysqldump -u #{yml['production']['username']} --password=#{yml['production']['password']} #{yml['production']['database']} > #{backup_folder}/#{file}"
run "tar -czf #{tar} #{backup_folder}/#{file}"
download "#{tar}", "#{tar}", :via => :scp
system "tar -xzf #{tar}"
system "mysql -u #{yml['development']['username']} --password=#{yml['development']['password']} #{yml['development']['database']} < #{repository}/tmp/#{file}"
system "rm #{tar} #{repository}/tmp/#{file}"
run "rm #{tar} #{backup_folder}/#{file}"
end
task :shared do
tar = "#{backup_path}.tar.gz"
run "tar -czf #{tar} #{shared_path}/system"
download "#{tar}", "#{tar}", :via => :scp
system "tar -xzf #{tar}"
system "rm -rf #{repository}/public/system"
system "mv #{repository}#{shared_path}/system #{repository}/public/"
system "rm -r #{tar} #{repository}/home"
run "rm #{tar}"
end
task :all do
backup.set_name
backup.db
backup.shared
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment