Kyl*_*nin 56 buckets amazon-s3
我一直在通过S3Fox与Amazon S3进行交互,我似乎无法删除我的存储桶.我选择一个桶,点击删除,在弹出窗口中确认删除,然后......没有任何反应.我应该使用另一种工具吗?
chr*_*679 143
最终可以使用新的生命周期(到期)规则功能一次性删除所有文件.您甚至可以从AWS控制台执行此操作.
只需右键单击AWS控制台中的存储桶名称,选择"属性",然后在页面底部的选项卡行中选择"生命周期"和"添加规则".创建生命周期规则,将"前缀"字段设置为空白(空白表示存储桶中的所有文件,或者您可以将其设置为"a"以删除名称以"a"开头的所有文件).将"天"字段设置为"1".而已.完成.假设文件超过一天,它们都应该被删除,然后您可以删除存储桶.
我只是第一次尝试这个,所以我还在等待文件被删除的速度有多快(它不是即时的,但可能是在24小时内发生)以及我是否需要支付一个删除命令或50万删除命令......手指交叉!
小智 30
记住S3 Buckets在被删除之前需要为空.好消息是大多数第三方工具都会自动执行此过程.如果您遇到S3Fox问题,我建议您尝试使用S3FM for GUI或S3Sync作为命令行.亚马逊有一篇很棒的文章描述了如何使用S3Sync.设置变量后,键命令为
./s3cmd.rb deleteall <your bucket name>
Run Code Online (Sandbox Code Playgroud)
删除包含大量单个文件的存储桶往往会导致很多S3工具崩溃,因为它们会尝试显示目录中所有文件的列表.您需要找到批量删除的方法.我为此找到的最好的GUI工具是Bucket Explorer.它以1000个文件块的形式删除S3存储桶中的文件,并且在尝试打开s3Fox和S3FM等大型存储桶时不会崩溃.
我还发现了一些可用于此目的的脚本.我还没有尝试过这些脚本,但它们看起来非常简单.
红宝石
require 'aws/s3'
AWS::S3::Base.establish_connection!(
:access_key_id => 'your access key',
:secret_access_key => 'your secret key'
)
bucket = AWS::S3::Bucket.find('the bucket name')
while(!bucket.empty?)
begin
puts "Deleting objects in bucket"
bucket.objects.each do |object|
object.delete
puts "There are #{bucket.objects.size} objects left in the bucket"
end
puts "Done deleting objects"
rescue SocketError
puts "Had socket error"
end
end
Run Code Online (Sandbox Code Playgroud)
PERL
#!/usr/bin/perl
use Net::Amazon::S3;
my $aws_access_key_id = 'your access key';
my $aws_secret_access_key = 'your secret access key';
my $increment = 50; # 50 at a time
my $bucket_name = 'bucket_name';
my $s3 = Net::Amazon::S3->new({aws_access_key_id => $aws_access_key_id, aws_secret_access_key => $aws_secret_access_key, retry => 1, });
my $bucket = $s3->bucket($bucket_name);
print "Incrementally deleting the contents of $bucket_name\n";
my $deleted = 1;
my $total_deleted = 0;
while ($deleted > 0) {
print "Loading up to $increment keys...\n";
$response = $bucket->list({'max-keys' => $increment, }) or die $s3->err . ": " . $s3->errstr . "\n";
$deleted = scalar(@{ $response->{keys} }) ;
$total_deleted += $deleted;
print "Deleting $deleted keys($total_deleted total)...\n";
foreach my $key ( @{ $response->{keys} } ) {
my $key_name = $key->{key};
$bucket->delete_key($key->{key}) or die $s3->err . ": " . $s3->errstr . "\n";
}
}
print "Deleting bucket...\n";
$bucket->delete_bucket or die $s3->err . ": " . $s3->errstr;
print "Done.\n";
Run Code Online (Sandbox Code Playgroud)
消息来源:Tarkblog
希望这可以帮助!
rob*_*byt 16
最近版本的s3cmd有--recursive
例如,
~/$ s3cmd rb --recursive s3://bucketwithfiles
Run Code Online (Sandbox Code Playgroud)
http://s3tools.org/kb/item5.htm
| 归档时间: |
|
| 查看次数: |
49784 次 |
| 最近记录: |