hadoop の s3fsを理解した Nobuo Danjou idがsigned long longだった。なんとか復元したけどこれでいいのかどうなのか。sizeはlong longまで絶対に行かないのでこれは放置してもかまわない。あと、unpackのときにQが使えなかった。 #!/usr/bin/perl use strict; use warnings; use Net::Amazon::S3; use bigint; my $s3 = Net::Amazon::S3->new( { aws_access_key_id => $ENV{AWS_ACCESS_KEY_ID}, aws_secret_access_key => $ENV{AWS_SECRET_ACCESS_KEY}, retry => 1, } ); my $bucket = $s3->bucket('lopnor-test'); my $res = $bucket->list_all; use Data::Dumper; warn Dumper $res->{keys}; for my $key (@{$res->{keys}}) { warn $key->{key}; if ($key->{size} < 1000) { my $res = $bucket->get_key($key->{key}); my ($file,$length) = unpack('b N', $res->{value}); warn $file ? 'FILE' : 'DIRECTORY'; $file or next; warn uri_escape $res->{value}; for (1 .. $length) { my $skip = 5 + ($_ - 1)*16; my ($id_u,$id_l,$size_u,$size_l) = unpack("x$skip NNNN", $res->{value}); my $id = ($id_u >= 2 ** 31 ? $id_u - 2 ** 32 : $id_u) * 2 ** 32 + $id_l; warn $id; my $size = $size_u * 2**32 + $size_l; warn $size; } } } Written on 2008-10-23. Categories: Tags: Next: 懐かしい感触 Previous: おは