public
Description: Some Ruby Tools to work on Amazon S3 and EC2, such as buckets list, creation, mysql backup to S3, cron jobs, and Gentoo specific little hacks... ;)
Homepage:
Clone URL: git://github.com/fred/amazon_ruby_tools.git
amazon_ruby_tools / s3_get_portage.rb
100644 51 lines (42 sloc) 1.493 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#######################################
#### WRITEN by Frederico de Souza #####
#### fred.the.master@gmail.com #####
#### Free to use as in free beer #####
#######################################
 
# This program will Upload a Gentoo portage from S3
# gentoo portage must be in /mnt/gentoo/portage
 
require 'aws/s3'
 
@time = Time.now
@date_format = "#{@time.year}.#{@time.month}.#{@time.day}"
@portage_name = "#{@date_format}_portage.tar.gz"
@local_portage = "/mnt/portage.tar.gz"
 
@access_key_id = ENV['AMAZON_ACCESS_KEY_ID']
@secret_access_key = ENV['AMAZON_SECRET_ACCESS_KEY']
@bucket_name = ENV['AMAZON_BUCKET_NAME']
 
def download_portage
  AWS::S3::Base.establish_connection!( :access_key_id => @access_key_id, :secret_access_key => @secret_access_key)
  bucket = AWS::S3::Bucket.find(@bucket_name)
  puts "Removing old portage"
  FileUtils.rm(@local_portage, :force => true)
  puts "Downloading new portage"
  open(@local_portage, 'w') do |file|
    AWS::S3::S3Object.stream(@portage_name, @bucket_name) do |chunk|
      file.write chunk
    end
  end
end
 
def untar_portage
  FileUtils.rm("/mnt/gentoo/portage", :force => true)
  puts "Starting to untar file to local portage. Wait 2 minutes"
  puts "Decompressing Portage file #{@local_portage}"
  IO.popen("cd /mnt/gentoo/ && rm -rf portage && tar -xzpf #{@local_portage}")
  sleep 120
end
 
def update_portage
  puts "Updating portage via EIX"
  IO.popen("eix-sync")
  sleep 120
end
 
download_portage
untar_portage
update_portage