0

すべてのユーザーのデータを保存するために使用されるバケットを1つ作成しました。ディレクトリの構造は次のとおりです。

-> BUCKET_NAME / USER_IDENTIFIER / CREATION_DATE / OBJET_ID

==> gsutilまたはAPIを使用して、各ユーザーの全体的なサイズを取得することは可能ですか?

たとえば、USER Xが「USER_1」で識別される場合、BUCKET_NAME/USER_1の下にあるすべてのオブジェクトのサイズを取得したいと思います。

誰かがこれを実装する方法を知っていれば素晴らしいでしょうか?標準のファイル名を使用すると、かなり簡単になりますが、GoogleCloudStorageでこれを実装する簡単な方法を見つけることができませんでした。

ありがとう、

ヒューグ

4

3 に答える 3

1

そのためのAPIはありません。ユーザーごとに、自分で簿記を保持する必要があります。
特定のキーの下にあるすべてのファイルを要求し、合計ファイルサイズを合計することはできますが、このプロセスは(非常に)低速です。

于 2012-07-21T13:05:10.487 に答える
1

ユーザー名が定期的に構造化されている場合は、次のようなスクリプトを作成できます。

for user_id in {0..100}; do;
    echo USER ${user_id}: $(gsutil ls -l gs://BUCKET_NAME/$user_id/**) 
done

これにより、各ユーザーのオブジェクトの数と合計データサイズが出力されます(ユーザーIDが単純な数値であると想定しています)。

Shayが指摘したように、ユーザーごとに多数のオブジェクトがある場合、このプロセスは非常に遅くなる可能性があります。

于 2012-10-09T03:49:13.480 に答える
1

これで、ネイティブのgsutilコマンドを使用できます。

バケット内の合計バイト数を人間が読める形式で出力するには、次のようにします。

gsutil du -ch gs://bucketname

ソース:https ://developers.google.com/storage/docs/gsutil/commands/du

「フォルダ」ごとの合計とグローバル合計が返されるので、とても便利です。

于 2014-05-06T00:43:46.167 に答える