Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require "rubygems"
- require "fileutils"
- require 'aws/s3'
- @database_backup_list = [] #an array of strings containing the names of the databases to be backed up
- @bucket_name = "bucket"
- @aws_access_key_id = "your_key_id"
- @aws_sectet_access_Key = "your_sectet_access_key"
- @mysql_user = "user"
- @mysql_password = "password"
- @backup_date = Time.now.strftime("%m-%d-%Y")
- @local_backup_location = "/home/you_user_dir/sqlbackups/#{@backup_date}"
- def run(command)
- result = system(command)
- raise("error, process exited with status #{$?.exitstatus}") unless result
- end
- def find_or_create_bucket(bucket_name)
- buckets = AWS::S3::Service.buckets.select { |b| b.name == bucket_name }
- if buckets.empty?
- AWS::S3::Bucket.create(bucket_name)
- return AWS::S3::Bucket.find(bucket_name)
- else
- return buckets.first
- end
- end
- def store_file(store_as, file, bucket)
- AWS::S3::S3Object.store(store_as, open(file), bucket)
- end
- AWS::S3::Base.establish_connection!(
- :access_key_id => @aws_access_key_id,
- :secret_access_key => @aws_secret_access_Key
- )
- @sqlbackup_bucket = find_or_create_bucket(BUCKET_NAME)
- run("mkdir #{@local_backup_location}")
- DATABASE_BACKUP_LIST.each do |mysql_database|
- dump_file = "#{@local_backup_location}/#{mysql_database}.sql.gz"
- cmd = "mysqldump --create-options -u#{@mysql_user} "
- cmd += " -p'#{@mysql_password}'" unless @mysql_password.nil?
- cmd += " #{mysql_database} | gzip > #{dump_file}"
- run cmd
- store_file "#{@backup_date}-#{mysql_database}", dump_file, @sqlbackup_bucket.name
- end
Add Comment
Please, Sign In to add comment