9

これがよくある質問であることは知っていますが、それに対する良い答えはないようです。

ゴブ(いくつあるかわかりません)のファイルが入ったバケットがあります。それらはすべて1個2k以内です。

1) これらのファイルをリストせずにいくつ持っているかを知るにはどうすればよいですか? 私は s3cmd.rb、aws/s3、および jets3t のものを使用しましたが、最初の 1000 レコードをカウントするコマンドを見つけることができます (実際にそれらに対して GETS を実行します)。

私は jets3t のアプレットも使用してきましたが、これは非常に使いやすいので、すべてのオブジェクトを一覧表示できないため、ヒープ スペースが不足します。(おそらく、それらすべてに対してGETSを実行し、それらをメモリに保持していることが原因です)

2) バケットを削除するにはどうすればよいですか? 私が見た中で最も良いのは、並列化された削除ループであり、同じファイルを削除しようとすることがあるという問題があります。これは、私が遭遇したすべての「deleteall」コマンドが行うことです。

何百万もの画像/テキストをホストしていると自慢しているあなたたちは何をしますか?? 削除したい場合はどうなりますか?

3) 最後に、これに対する別の回答はありますか? これらのファイルはすべて txt/xml ファイルであるため、S3 がそのような懸念事項であるかどうかさえわかりません。おそらく、これをある種のドキュメント データベースに移動する必要がありますか??

要するに、Amazon S3 API には、COUNT と DEL_BUCKET という 2 つの非常に重要な操作が欠けているということです。(実際には、バケットを削除するコマンドがありますが、バケットが空の場合にのみ機能します) 誰かがこれらの 2 つの操作を実行するのに適した方法を思いついた場合、私は喜んで多くの報奨金を放棄します。

アップデート

いくつかの質問に答えるだけです。私がこれを尋ねる理由は、私が過去 1 年ほどの間、数十万、または数百万の 2k の txt および xml ドキュメントを保存してきたからです。前回、数か月前にバケットを削除したかったのですが、削除する前にバケットを空にする必要があるため、文字通り数日かかりました。これは、API サポートなしで再びこれを行う必要があるのではないかと恐れているお尻の痛みでした。

アップデート

これは家を揺るがします!

http://github.com/SFEley/s3nuke/

私は数分で 1 ~ 2,000 個のファイルに相当する数ギグを RM しました。

4

7 に答える 7

1

「リスト」はデータを取得しません。私は s3cmd (Python スクリプト) を使用しています。

s3cmd ls s3://foo | awk '{print $4}' | split -a 5 -l 10000 bucketfiles_
for i in bucketfiles_*; do xargs -n 1 s3cmd rm < $i & done

ただし、最初に取得したbucketfiles_ファイルの数を確認してください。ファイルごとに 1 つの s3cmd が実行されます。

しばらく時間がかかりますが、数日ではありません。

于 2009-07-22T06:28:30.223 に答える
1

私は数千しか持っていないので、「何百万もの画像/テキストをホストすることを自慢している人」の一人ではないことは間違いありません。これはあなたが探している答えではないかもしれませんが、私はこれをしばらく見ました戻る。

私が覚えていることから、GET が行う完全なオブジェクトを取得するのではなく、オブジェクトに関する情報を取得する HEAD と呼ばれる API コマンドがあり、オブジェクトのカウントに役立つ場合があります。

バケットの削除に関しては、私が調べていた時点で、API はバケットを空にする必要があると明確に述べているため、最初にすべてのオブジェクトを削除する必要があります。

しかし、私は S3 をバックアップとして使用していたため、これらのコマンドのいずれも使用しませんでした。最終的に、必要なファイルを S3 にアップロードするいくつかのルーチンを作成しました (その部分は自動化されました)。方程式の削除/ファイル管理側。そのために、必要なすべてを行った Bucket Explorer を使用します。私の場合、必要なすべてを実行するプログラムを 50 ドルで入手できるのに、時間を費やす価値はありませんでした。おそらく他にも同じことをするものがあります(例:CloudBerry)

あなたの場合、バケット エクスプローラーを使用して、バケットを右クリックして削除を選択するか、右クリックしてプロパティを選択すると、オブジェクトの数とそれらが占めるサイズがカウントされます。オブジェクト全体をダウンロードするわけではありません。(たとえば、私が最後に見たバケットは 12Gb で約 500 個のファイルであり、12GB をダウンロードするのに数時間かかりますが、サイズとカウントは 1 秒か 2 秒で返されます)。制限があるとすれば、それは確かに 1000 ではありません。

お役に立てれば。

于 2009-07-16T12:33:01.893 に答える
0

カウント

aws s3 ls s3://mybucket/ --recursive | wc -l 

この投稿から

消去

aws s3 rm --recursive s3://mybucket/ && aws s3 rb s3://mybucket/

これにより、すべてのアイテムが削除され、次にバケットが削除されます。

于 2021-03-20T15:41:26.953 に答える
0

バケットから何十万ものファイルを削除する際に同じ問題が発生しました。S3 へのレイテンシーが低いため、EC2 インスタンスを起動して並列削除を実行する価値がある場合があります。たくさんの EC2 サーバーをホストし、バケツをすばやく削除するために人々に課金することで、いくらかのお金が稼げると思います。(少なくとも、Amazon が API の変更に取り掛かるまでは)

于 2009-07-22T08:02:09.457 に答える
0

1) 最初の質問に関しては、実際にアイテムを取得せずにバケットにアイテムをリストすることができます。SOAPREST APIの両方でそれを行うことができます。ご覧のとおり、リストするアイテムの最大数と、リストを開始する位置 (マーカー) を定義できます。詳しくはこちらをご覧ください。

ページングの実装については知りませんが、特に REST インターフェイスの場合、任意の言語で実装するのは非常に簡単です。

2) バケットを削除する唯一の方法は、最初にすべてのアイテムからバケットを空にすることだと思います。この質問も参照してください。

3) S3 は、多数のファイルを保存するのに非常に適していると思います。ただし、それはあなたが何をしたいかによって異なります。バイナリファイルも保存する予定はありますか? クエリを実行する必要がありますか、それともファイルを一覧表示するだけで十分ですか?

于 2009-07-16T12:34:03.920 に答える
0

古いスレッドですが、これを理解するまで答えを探していたので、まだ関連しています。GUI ベースのツール (つまり、コードなし) を使用してファイル カウントが必要でした。私はたまたま、S3 との間のドラッグ アンド ドロップ転送に 3Hub というツールを使用しています。特定のバケットにあるファイルの数を知りたいと思っていました(請求がバケットごとに分類されるとは思いません)。

So, using 3Hub, 
- list the contents of the bucket (looks basically like a finder or explorer window)
- go to the bottom of the list, click 'show all'
- select all (ctrl+a)
- choose copy URLs from right-click menu
- paste the list into a text file (I use TextWrangler for Mac) 
- look at the line count  

バケットには 20521 個のファイルがあり、1 分もかからずにファイルのカウントを行いました。

これには何十万ものファイルに時間がかかるため、誰かがより良い方法を見つけたかどうかを知りたいです。

于 2014-02-15T23:09:06.330 に答える