まとめたほうが安いようなので...
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 -