Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6088
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Удалить ведра Amazon S3?
Я взаимодействовал с Amazon S3 через S3Fox и, похоже, не могу удалить свои ведра. Я выбираю ведро, нажимаю удалить, подтверждаю удаление во всплывающем окне и... ничего не происходит. Есть ли еще один инструмент, который я должен использовать?
Наконец-то можно удалить все файлы за один раз, используя новую функцию правил жизненного цикла (истечения срока действия). Вы даже можете сделать это с помощью консоли AWS.
Просто щелкните правой кнопкой мыши на имени корзины в консоли AWS, выберите "Properties", а затем в строке вкладок внизу страницы выберите "lifecycle" и "add rule". Создайте правило жизненного цикла с пустым полем "Prefix" (пустое означает все файлы в корзине, или вы можете установить его в значение "a", чтобы удалить все файлы, имена которых начинаются с "a"). Установите для поля "Days" значение "1". Вот и все. Сделано. Предполагая, что файлы старше одного дня, они все должны быть удалены, тогда вы можете удалить ведро.
Я только что попробовал это в первый раз, поэтому я все еще жду, чтобы увидеть, как быстро удаляются файлы (это не было мгновенным, но предположительно должно произойти в течение 24 часов) и будет ли мне выставлен счет за одну команду удаления или 50 миллионов команд удаления... скрестив пальцы!
Помните, что ведра S3 должны быть пустыми, прежде чем их можно будет удалить. Хорошей новостью является то, что большинство сторонних инструментов автоматизируют этот процесс. Если у вас возникли проблемы с S3Fox, я рекомендую попробовать S3FM для GUI или S3Sync для командной строки. Amazon имеет большую статью, описывающую, как использовать S3Sync . После настройки переменных ключевой командой будет
./s3cmd.rb deleteall <your bucket name>
Удаление ведер с большим количеством отдельных файлов приводит к сбою многих инструментов S3, потому что они пытаются отобразить список всех файлов в каталоге. Вам нужно найти способ удаления в пакетах. Лучший инструмент GUI, который я нашел для этой цели, - это Bucket Explorer. Он удаляет файлы в корзине S3 в 1000 кусков файла и не дает сбоя при попытке открыть большие корзины, такие как s3Fox и S3FM.
Я также нашел несколько сценариев, которые вы можете использовать для этой цели. Я еще не пробовал эти сценарии, но они выглядят довольно простыми.
RUBY
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
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";
SOURCE: Таркблог
Надеюсь, это поможет!
последние версии s3cmd имеют --recursive
напр.,
~/$ s3cmd rb --recursive s3://bucketwithfiles
http://s3tools.org/kb/item5.htm
Это может быть ошибкой в S3Fox, потому что он обычно способен удалять элементы рекурсивно. Однако я не уверен, что когда-либо пытался удалить целое ведро и его содержимое сразу.
Проект JetS3t , как упоминал Стю, включает в себя Java GUI applet, который вы можете легко запустить в браузере для управления своими ведрами S3: Cockpit . У него есть как сильные, так и слабые стороны по сравнению с S3Fox, но есть хороший шанс, что он поможет вам справиться с вашим проблемным ведром. Хотя это потребует от вас сначала удалить объекты, а затем ведро.
Отказ от ответственности: я являюсь автором JetS3t и Cockpit
SpaceBlock также упрощает удаление ведер s3 - щелкните правой кнопкой мыши ведро, удалить, дождитесь завершения задания в представлении передачи, готово.
Это свободный и открытый исходный код windows s3 front-end, который я поддерживаю, поэтому бесстыдный plug alert и т. д.
Я реализовал bucket-destroy, многопоточную утилиту, которая делает все необходимое для удаления ведра. Я обрабатываю непустые ведра,а также ключи ведра с включенной версией.
Вы можете прочитать сообщение в блоге здесь http://bytecoded.blogspot.com/2011/01/recursive-delete-utility-for-version.html и инструкции здесь http://code.google.com/p/bucket-destroy/
Я успешно удалил с ним ведро, которое содержит двойное '//' в имени ключа, версионный ключ и ключи DeleteMarker. В настоящее время я запускаю его на ведре, которое содержит ~40,000,000 до сих пор мне удавалось удалить 1,200,000 за несколько часов на m1.large. Обратите внимание, что утилита является многопоточной, но не имеет (пока) реализованной перетасовки (что приведет к горизонтальному масштабированию, запуску утилиты на нескольких машинах).
Если вы используете консоль amazon и на одноразовой основе должны очистить ведро: вы можете перейти к своему ведру, затем выбрать верхнюю клавишу, затем прокрутите вниз, а затем нажмите shift на клавиатуре, а затем нажмите на нижнюю. Он будет выбирать все между ними, то вы можете щелкнуть правой кнопкой мыши и удалить.
Если у вас установлено ruby (и rubygems), установите aws-s3 gem с помощью
gem install aws-s3
или
sudo gem install aws-s3
создать файл delete_bucket.rb :
require "rubygems" # optional
require "aws/s3"
AWS::S3::Base.establish_connection!(
:access_key_id => 'access_key_id',
:secret_access_key => 'secret_access_key')
AWS::S3::Bucket.delete("bucket_name", :force => true)
и запустить его:
ruby delete_bucket.rb
Так как Bucket#delete возвращал исключения таймаута много для меня, я расширил скрипт:
require "rubygems" # optional
require "aws/s3"
AWS::S3::Base.establish_connection!(
:access_key_id => 'access_key_id',
:secret_access_key => 'secret_access_key')
while AWS::S3::Bucket.find("bucket_name")
begin
AWS::S3::Bucket.delete("bucket_name", :force => true)
rescue
end
end
Один из методов, который можно использовать, чтобы избежать этой проблемы, - это поместить все объекты в "folder" в корзину, что позволяет вам просто удалить папку, а затем перейти и удалить корзину. Кроме того, инструмент s3cmd, доступный в http://s3tools.org , можно использовать для удаления корзины с файлами в ней:
s3cmd rb --force s3://bucket-name
Я думаю, что самый простой способ-это использовать S3fm, бесплатный онлайн - файловый менеджер для Amazon S3. Нет приложений для установки, нет регистрации сторонних веб-сайтов. Работает непосредственно с Amazon S3, безопасно и удобно.
Просто выберите свое ведро и нажмите Удалить.
Это очень сложная проблема. Мое решение находится на уровне http://stuff.mit.edu/~jik/software/delete-s3-bucket.pl.txt . Он описывает все то, что я определил, может пойти не так в комментарии вверху. Вот текущая версия скрипта (если я изменю ее, я поставлю новую версию на URL, но, вероятно, не здесь).
#!/usr/bin/perl
# Copyright (c) 2010 Jonathan Kamens.
# Released under the GNU General Public License, Version 3.
# See <http://www.gnu.org/licenses/>.
# $Id: delete-s3-bucket.pl,v 1.3 2010/10/17 03:21:33 jik Exp $
# Deleting an Amazon S3 bucket is hard.
#
# * You can't delete the bucket unless it is empty.
#
# * There is no API for telling Amazon to empty the bucket, so you have to
# delete all of the objects one by one yourself.
#
# * If you've recently added a lot of large objects to the bucket, then they
# may not all be visible yet on all S3 servers. This means that even after the
# server you're talking to thinks all the objects are all deleted and lets you
# delete the bucket, additional objects can continue to propagate around the S3
# server network. If you then recreate the bucket with the same name, those
# additional objects will magically appear in it!
#
# It is not clear to me whether the bucket delete will eventually propagate to
# all of the S3 servers and cause all the objects in the bucket to go away, but
# I suspect it won't. I also suspect that you may end up continuing to be
# charged for these phantom objects even though the bucket they're in is no
# longer even visible in your S3 account.
#
# * If there's a CR, LF, or CRLF in an object name, then it's sent just that
# way in the XML that gets sent from the S3 server to the client when the
# client asks for a list of objects in the bucket. Unfortunately, the XML
# parser on the client will probably convert it to the local line ending
# character, and if it's different from the character that's actually in the
# object name, you then won't be able to delete it. Ugh! This is a bug in the
# S3 protocol; it should be enclosing the object names in CDATA tags or
# something to protect them from being munged by the XML parser.
#
# Note that this bug even affects the AWS Web Console provided by Amazon!
#
# * If you've got a whole lot of objects and you serialize the delete process,
# it'll take a long, long time to delete them all.
use threads;
use strict;
use warnings;
# Keys can have newlines in them, which screws up the communication
# between the parent and child processes, so use URL encoding to deal
# with that.
use CGI qw(escape unescape); # Easiest place to get this functionality.
use File::Basename;
use Getopt::Long;
use Net::Amazon::S3;
my $whoami = basename $0;
my $usage = "Usage: $whoami [--help] --access-key-id=id --secret-access-key=key
--bucket=name [--processes=#] [--wait=#] [--nodelete]
Specify --processes to indicate how many deletes to perform in
parallel. You're limited by RAM (to hold the parallel threads) and
bandwidth for the S3 delete requests.
Specify --wait to indicate seconds to require the bucket to be verified
empty. This is necessary if you create a huge number of objects and then
try to delete the bucket before they've all propagated to all the S3
servers (I've seen a huge backlog of newly created objects take *hours* to
propagate everywhere). See the comment at the top of the script for more
information about this issue.
Specify --nodelete to empty the bucket without actually deleting it.\n";
my($aws_access_key_id, $aws_secret_access_key, $bucket_name, $wait);
my $procs = 1;
my $delete = 1;
die if (! GetOptions(
"help" => sub { print $usage; exit; },
"access-key-id=s" => \$aws_access_key_id,
"secret-access-key=s" => \$aws_secret_access_key,
"bucket=s" => \$bucket_name,
"processess=i" => \$procs,
"wait=i" => \$wait,
"delete!" => \$delete,
));
die if (! ($aws_access_key_id && $aws_secret_access_key && $bucket_name));
my $increment = 0;
print "Incrementally deleting the contents of $bucket_name\n";
$| = 1;
my(@procs, $current);
for (1..$procs) {
my($read_from_parent, $write_to_child);
my($read_from_child, $write_to_parent);
pipe($read_from_parent, $write_to_child) or die;
pipe($read_from_child, $write_to_parent) or die;
threads->create(sub {
close($read_from_child);
close($write_to_child);
my $old_select = select $write_to_parent;
$| = 1;
select $old_select;
&child($read_from_parent, $write_to_parent);
}) or die;
close($read_from_parent);
close($write_to_parent);
my $old_select = select $write_to_child;
$| = 1;
select $old_select;
push(@procs, [$read_from_child, $write_to_child]);
}
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);
my $deleted = 1;
my $total_deleted = 0;
my $last_start = time;
my($start, $waited);
while ($deleted > 0) {
$start = time;
print "\nLoading ", ($increment ? "up to $increment" :
"as many as possible")," keys...\n";
my $response = $bucket->list({$increment ? ('max-keys' => $increment) : ()})
or die $s3->err . ": " . $s3->errstr . "\n";
$deleted = scalar(@{ $response->{keys} }) ;
if (! $deleted) {
if ($wait and ! $waited) {
my $delta = $wait - ($start - $last_start);
if ($delta > 0) {
print "Waiting $delta second(s) to confirm bucket is empty\n";
sleep($delta);
$waited = 1;
$deleted = 1;
next;
}
else {
last;
}
}
else {
last;
}
}
else {
$waited = undef;
}
$total_deleted += $deleted;
print "\nDeleting $deleted keys($total_deleted total)...\n";
$current = 0;
foreach my $key ( @{ $response->{keys} } ) {
my $key_name = $key->{key};
while (! &send(escape($key_name) . "\n")) {
print "Thread $current died\n";
die "No threads left\n" if (@procs == 1);
if ($current == @procs-1) {
pop @procs;
$current = 0;
}
else {
$procs[$current] = pop @procs;
}
}
$current = ($current + 1) % @procs;
threads->yield();
}
print "Sending sync message\n";
for ($current = 0; $current < @procs; $current++) {
if (! &send("\n")) {
print "Thread $current died sending sync\n";
if ($current = @procs-1) {
pop @procs;
last;
}
$procs[$current] = pop @procs;
$current--;
}
threads->yield();
}
print "Reading sync response\n";
for ($current = 0; $current < @procs; $current++) {
if (! &receive()) {
print "Thread $current died reading sync\n";
if ($current = @procs-1) {
pop @procs;
last;
}
$procs[$current] = pop @procs;
$current--;
}
threads->yield();
}
}
continue {
$last_start = $start;
}
if ($delete) {
print "Deleting bucket...\n";
$bucket->delete_bucket or die $s3->err . ": " . $s3->errstr;
print "Done.\n";
}
sub send {
my($str) = @_;
my $fh = $procs[$current]->[1];
print($fh $str);
}
sub receive {
my $fh = $procs[$current]->[0];
scalar <$fh>;
}
sub child {
my($read, $write) = @_;
threads->detach();
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);
while (my $key = <$read>) {
if ($key eq "\n") {
print($write "\n") or die;
next;
}
chomp $key;
$key = unescape($key);
if ($key =~ /[\r\n]/) {
my(@parts) = split(/\r\n|\r|\n/, $key, -1);
my(@guesses) = shift @parts;
foreach my $part (@parts) {
@guesses = (map(($_ . "\r\n" . $part,
$_ . "\r" . $part,
$_ . "\n" . $part), @guesses));
}
foreach my $guess (@guesses) {
if ($bucket->get_key($guess)) {
$key = $guess;
last;
}
}
}
$bucket->delete_key($key) or
die $s3->err . ": " . $s3->errstr . "\n";
print ".";
threads->yield();
}
return;
}
Я взломал скрипт для этого из Python, он успешно удалил мои 9000 объектов. Видеть эту страницу:
https://efod.se/blog/archive/2009/08/09/delete-s3-bucket
Еще один бесстыдный плагин: я устал ждать индивидуальных запросов на удаление HTTP, когда мне нужно было удалить 250 000 элементов, поэтому я написал сценарий Ruby, который делает это многопоточным и завершает за долю времени:
http://github.com/sfeley/s3nuke/
Это тот, который работает намного быстрее в Ruby 1.9 из-за способа обработки потоков.
Я являюсь одним из членов команды разработчиков Bucket Explorer Team, мы предоставим другой вариант для удаления Bucket в соответствии с выбором пользователей... 1) быстрое удаление-эта опция удалит ваши данные из корзины кусками по 1000. 2) постоянное удаление-эта опция будет удалять объекты в очереди.
Как удалить файлы Amazon S3 и ведро?
Amazon недавно добавила новую функцию "Мультиобъектное удаление", которая позволяет удалять до 1000 объектов одновременно с одним запросом API. Это должно позволить упростить процесс удаления огромного количества файлов из корзины.
Документация по новой функции доступна здесь: http://docs.amazonwebservices.com/AmazonS3/latest/dev/DeletingMultipleObjects.html
Мне придется взглянуть на некоторые из этих альтернативных файловых менеджеров. Я использовал (и нравится) BucketExplorer, который вы можете получить от - удивительно - http://www.bucketexplorer.com/ .
Это 30-дневная бесплатная пробная версия, а затем (в настоящее время) стоит US$49.99 за лицензию (US$49.95 на титульной странице покупки).
Сначала удалите все объекты из корзины. Затем вы можете удалить само ведро.
По-видимому, нельзя удалить ведро с объектами в нем, и S3Fox не делает этого за вас.
У меня были и другие небольшие проблемы с S3Fox, как это, и теперь я использую инструмент на основе Java, jets3t , который больше подходит для условий ошибок. Но ведь должны быть и другие.