Guest User

Untitled

a guest
Jan 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. namespace :db do
  2. task :backup_name, :roles => :db, :only => { :primary => true } do
  3. now = Time.now
  4. run "mkdir -p db_backups"
  5. backup_time = [now.year,now.month,now.day,now.hour,now.min,now.sec].join('-')
  6. set :backup_file, "db_backups/#{application}-snapshot-#{backup_time}.sql"
  7. end
  8.  
  9. desc 'Load remote production database into local development environment'
  10. task :clone_to_local, :roles => :db, :only => { :primary => true } do
  11. conf = YAML.load_file("config/database.yml")['production']
  12. mysql_command = [
  13. "mysqldump --add-drop-table",
  14. ("-u #{conf['username']}" if conf['username']),
  15. ("-p#{conf['password']}" if conf['password']),
  16. ("-h #{conf['host']}" if conf['host']),
  17. conf['database']
  18. ].compact.join(' ')
  19.  
  20. backup_name
  21. command = "#{mysql_command} | bzip2 -c > #{backup_file}.bz2"
  22. run command
  23. system 'mkdir -p tmp' unless File.directory?('tmp')
  24. local_file = "tmp/#{application}.sql.bz2"
  25. logger.info 'downloading remote backup file ...'
  26. get "#{backup_file}.bz2", local_file
  27. conf = YAML.load_file("config/database.yml")['development']
  28. mysql_command = [
  29. "mysql",
  30. ("-u #{conf['username']}" if conf['username']),
  31. ("-p#{conf['password']}" if conf['password']),
  32. ("-h #{conf['host']}" if conf['host']),
  33. conf['database']
  34. ].compact.join(' ')
  35. command = "bzcat #{local_file} | #{mysql_command}"
  36. logger.info 'loading database from remote backup ...'
  37. logger.debug command
  38. system command
  39. end
  40. end
Add Comment
Please, Sign In to add comment