LoginSignup
4
5

More than 5 years have passed since last update.

tarでまとめつつ、glacierにput/get

Last updated at Posted at 2013-10-10

まとめたほうが安いようなので...

put

put_from_stdin.rb
#!/usr/bin/env ruby
require 'fog'

glacier = Fog::AWS::Glacier.new(
  :aws_access_key_id => YOUR_KEY_ID,
  :aws_secret_access_key => YOUR_SECRET_KEY,
  :region => YOUR_REGION
  )
vault = glacier.vaults.get('VOLT_NAME')
$stdin.instance_eval { undef :rewind }
p vault.archives.create(
  :body => $stdin,
  :multipart_chunk_size => 1024 * 1024 * 5,
  :description => 'archive-key'
)

作成されたarchive情報は保存しておくと、後のインベントリのジョブが省けてちょっと楽

tar -cO target_dir - | ./put_from_stdin.rb

get

get_to_stdout.rb
#!/usr/bin/env ruby
require 'fog'

glacier = Fog::AWS::Glacier.new(
  :aws_access_key_id => YOUR_KEY_ID,
  :aws_secret_access_key => YOUR_SECRET_KEY,
  :region => YOUR_REGION
  )
vault = glacier.vaults.get(VOLT_NAME)

## archive情報保存してたら、直接archive_idを指定出来るので、このjobいらない。
archive = job_inventory.get_output.body["ArchiveList"].find{|archive| archive['ArchiveDescription'] == 'archive-key'}

job_archive = vault.jobs.create(:type => Fog::AWS::Glacier::Job::ARCHIVE, :archive_id => archive['ArchiveId'])
job_archive.get_output :io => STDOUT

あとは

./get_to_stdout.rb | tar xvfi -
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5