Guest User

Untitled

a guest
Oct 20th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. require 'rubygems'
  2. require 'active_record'
  3. require 'yaml'
  4. require 'logger'
  5. require 'fileutils'
  6. require 'aws/s3'
  7.  
  8. ROOT = File.expand_path(File.dirname(__FILE__))
  9. CONFIG = YAML.load_file(File.join(ROOT, "config", "database.yml"))
  10. TMP_BACKUP = File.join(ROOT, "tmp", "backup")
  11. CLONE_STRING = "git clone git@YOUR-DOMAIN.com:"
  12. BACKUP_FILENAME = "REPOS.BACKUP-#{Time.now.strftime("%Y.%m.%d-%H.%M.%S")}.tar.gz"
  13. LOG = Logger.new(File.join(ROOT, "log", "backup.log"))
  14.  
  15. begin
  16. ActiveRecord::Base.establish_connection(
  17. :adapter => CONFIG['production']['adapter'],
  18. :host => "localhost",
  19. :username => CONFIG['production']['username'],
  20. :password => CONFIG['production']['password'],
  21. :database => CONFIG['production']['database']
  22. )
  23. rescue => e
  24. LOG.error "Error with active record adapter"
  25. end
  26.  
  27. #CREATE MODEL FOR PROJECTS
  28. class Project < ActiveRecord::Base
  29. end
  30.  
  31. #DELETE EXISTING FOLDER AND RECREATE TO START FRESH
  32. LOG.info "Clearing old backup files"
  33. FileUtils.rm_rf TMP_BACKUP if File.directory?(TMP_BACKUP)
  34. FileUtils.mkdir_p TMP_BACKUP
  35.  
  36. #ITERATE THROUGH ALL THE PROJECT RECORDS
  37. Project.all.each do |p|
  38. LOG.info "Cloning #{p.code} repo"
  39. `#{CLONE_STRING}#{p.code} #{File.join(TMP_BACKUP, p.code)}`
  40. end
  41.  
  42. begin
  43. #compress the newly created backup
  44. LOG.info "Compressing #{BACKUP_FILENAME}"
  45. FileUtils.mkdir_p File.join(ROOT, "backups")#create dir if not exists
  46. `tar -zcPf #{File.join(ROOT, "backups", BACKUP_FILENAME)} #{TMP_BACKUP} >> #{File.join(ROOT, "log", "backup.log")}`
  47. FileUtils.rm_rf TMP_BACKUP if File.directory?(TMP_BACKUP)
  48. rescue => e
  49. LOG.error "Error compressing archive"
  50. end
  51.  
  52. begin
  53. #connect to amazon s3
  54. LOG.info "Connecting to amazon s3"
  55. AWS::S3::Base.establish_connection!(:access_key_id => 'ACCESS_KEY_GOES_HERE', :secret_access_key => 'SECRET_KEY_GOES_HERE')
  56. LOG.info "AWS Connection established"
  57. LOG.info "Uploading to amazon bucket"
  58. AWS::S3::S3Object.store(BACKUP_FILENAME, File.open(File.join(ROOT, "backups", BACKUP_FILENAME)), 'BUCKET_NAME_GOES_HERE')
  59. LOG.info "Finished uploading to amazon bucket"
  60. rescue => e
  61. LOG.error "ERROR uploading to amazon bucket"
  62. end
Add Comment
Please, Sign In to add comment