ඇමසන් එස් 3 බාල්දියක ප්‍රමාණය ලබා ගන්නේ කෙසේද?


328

ඇමසන් එස් 3 බාල්දියක ප්‍රමාණය (බයිට් වලින් සහ අයිතම # වලින්) ප්‍රස්ථාරණය කිරීමට මා කැමති අතර දත්ත ලබා ගැනීම සඳහා කාර්යක්ෂම ක්‍රමයක් සොයමි.

මෙම s3cmd මෙවලම් භාවිතා මුළු ගොනු විශාලත්වය ලබා ගැනීමට ක්රමයක් ලබා s3cmd du s3://bucket_name, නමුත් එය සෑම ගොනු පිළිබඳ දත්ත කොටු ගවුමට හා තමන්ගේ ම මුදලක් ගණනය වගේ පෙනුමක් සිට මම පරිමාණ කිරීමට එහි ඇති හැකියාව ගැන කනගාටු වෙනවා. ඇමසන් විසින් GB- මාස වලින් පරිශීලකයින්ට අය කරන බැවින් ඔවුන් මෙම අගය කෙලින්ම හෙළි නොකිරීම අමුතු දෙයක් ලෙස පෙනේ.

නමුත් ඇමසන් බෝපාල් API බාල්දියක් දී භාණ්ඩ සංඛ්යාව නැවත, s3cmd එය හෙළිදරව් කිරීමට බවක් පෙනෙන්නට නැත. මට කළ හැකි s3cmd ls -r s3://bucket_name | wc -lනමුත් එය කඩුල්ලක් සේ පෙනේ.

රූබි ඒඩබ්ලිව්එස් :: එස් 3 පුස්තකාලය හොඳ පෙනුමක් ඇති නමුත් සපයන්නේ # බාල්දි අයිතම # මිස මුළු බාල්දි ප්‍රමාණය නොවේ.

මෙම දත්ත ලබා ගැනීමේ මාර්ග සපයන වෙනත් විධාන රේඛා මෙවලම් හෝ පුස්තකාල (පර්ල්, පීඑච්පී, පයිතන් හෝ රූබි වලට වැඩි කැමැත්තක් දක්වන්න) ගැන කිසිවෙකු දැනුවත්ද?


බාල්දි ප්‍රමාණය විශ්ලේෂණය කිරීම සඳහා මම මෙවලමක් ලිව්වෙමි
omribahumi

25
ඇමසන් අවකාශය සඳහා අය කිරීම ගැන මම පුදුමයට පත් වෙමි, නමුත් S3 පුවරුව හරහා S3 බාල්දියක් විසින් ගන්නා ලද මුළු ප්‍රමාණයම ලබා නොදෙන්න.
ලූක්

මට පහත බොහෝ පිළිතුරු බාල්දි ප්‍රමාණය ලබා ගැනීමට බොහෝ කාලයක් ගත විය, කෙසේ වෙතත් මෙම පයිතන් පිටපත බොහෝ පිළිතුරු වලට වඩා වේගවත් විය - slsmk.com/getting-the-size-of-an-s3-bucket-using -boto3-for-
aws

Answers:


183

AWS CLI දැන් JMESPath ප්‍රකාශන ගන්නා --queryපරාමිතියට සහය දක්වයි .

මෙම මාර්ගයෙන් ඔබ විසින් ලබා දී ඇති ප්රමාණය වටිනාකම් කළොත් හැකි list-objectsභාවිතා sum(Contents[].Size)වැනි හා ගණන් length(Contents[]).

පහත පරිදි නිල AWS CLI භාවිතයෙන් මෙය ක්‍රියාත්මක කළ හැකි අතර එය 2014 පෙබරවාරි මාසයේදී හඳුන්වා දෙන ලදී

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"

26
විශාල බාල්දි සඳහා (විශාල # ගොනු), මෙය අතිශයින්ම මන්දගාමී වේ. පයිතන් උපයෝගීතාව s4cmd "du" වේගයෙන් අකුණු සැරයි:s4cmd du s3://bucket-name
බ්‍රෙන්ට් ෆවුස්ට්

ඒක අමුතුයි. ඔබගේ බාල්දියේ (නොගැඹුරු සහ මේදය / ගැඹුරු සහ සිහින්) සමස්ත පැතිකඩ කුමක්ද? පෙනෙන ආකාරයට s3cmdසමාන පොදු ශීර්ෂයන් තිබිය යුතුය AWS CLI. තුළ කේතය එය සංදර්ශන s3cmd බාල්දියක් එක් එක් බහලුම සඳහා ඉල්ලීමක් කරන්න.
ක්‍රිස්ටෝපර් හැකට්

26
එය මිනිස් කියවිය හැකි ආකෘතියෙන් ලබා ගැනීමට: aws s3api --profile PROFILE_NAME list-objects --bucket BUCKET_NAME --output json --query "[sum(Contents[].Size), length(Contents[])]" | awk 'NR!=2 {print $0;next} NR==2 {print $0/1024/1024/1024" GB"}'
සන්දීප්

23
දැන් AWS Cloudwatch විසින් බාල්දියකට “BucketSizeBytes” මෙට්‍රික් එකක් ලබා දෙන අතර මෙය තවදුරටත් නිවැරදි විසඳුම නොවේ. ටුකාකූකාන්ගේ පිළිතුර පහත බලන්න.
cce

3
s4cmd duනියමයි, ස්තූතියි @ බ්‍රෙන්ට් ෆවුස්ට්! -rඋප නාමාවලිවල ප්‍රමාණයන් ලබා ගැනීම සඳහා ඔබ එකතු කළ යුතු කුඩා සටහන (අදාළ අය සඳහා) .
ග්‍රෙග් සාඩෙට්ස්කි

388

මෙය දැන් නිල AWS විධාන රේඛා සේවාදායකයා සමඟ සුළු වශයෙන් කළ හැකිය:

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/

නිල ලියකියවිලි

ඔබට සම්පූර්ණ බාල්දිය ගණන් කිරීමට අවශ්‍ය නැතිනම් මෙය මාර්ග උපසර්ගයන් ද පිළිගනී:

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/directory

26
මෙය හොඳම හා යාවත්කාලීන පිළිතුරයි
ටිම්

3
එකඟ වන්න, මෙය හොඳම පිළිතුරයි.
ලුයිස් අර්ටෝලා

32
සාරාංශය පෙන්වීමට පෙර බාල්දියේ ඇති සියලුම වස්තු මූලික වශයෙන් ලැයිස්තුගත කර ඇති බැවින් බොහෝ ලිපිගොනු සහිත බාල්දි සඳහා මෙය ඉතා මන්දගාමී වන අතර, එය ක්‍රිස්ටෝපර් හැකට්ගේ පිළිතුරට වඩා සැලකිය යුතු වේගයකින් නොවේ - මෙය හැරෙන්නට වඩා is ෝෂාකාරී වේ.
ගුස්

1
ඔබ සාරාංශ ප්‍රමාණය ගැන පමණක් උනන්දු වන්නේ නම්, මෙය වේගවත්ම හා යාවත්කාලීන විසඳුම වන අතර එම අගය සොයා ගැනීම සඳහා ඔබට වලිගය හරහා පයිප්ප කළ හැකිය.
චාලි හිල්මන්

3
මෙය නාමාවලි ගසෙහි ඇති සියලුම තනි ගොනු වල ප්‍රමාණය පෙන්වනු ඇත. මට නාමාවලිය සඳහා සම්පූර්ණ ප්‍රමාණය අවශ්‍ය නම් කුමක් කළ යුතුද?
ක්‍රිස් එෆ්

150

AWS කොන්සෝලය:

වන විට 2015 ජූලි මස 28 වැනි දින මෙම තොරතුරු ලබා ගත හැක CloudWatch හරහා . ඔබට GUI එකක් අවශ්‍ය නම්, CloudWatch කොන්සෝලය වෙත යන්න : (කලාපය තෝරන්න>) ප්‍රමිතික> S3

AWS CLI විධානය:

මෙහි පළ කර ඇති වෙනත් විධානයන්ට වඩා මෙය ඉක්මන් වේ, මන්දයත් එක් එක් ගොනුවේ ප්‍රමාණය ගණනය කිරීම සඳහා තනි තනිව විමසන්නේ නැත.

 aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 --period 86400 --statistics Average --region eu-west-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=toukakoukan.com Name=StorageType,Value=StandardStorage

වැදගත් : ඔබ මාන පරාමිතිය තුළ StorageType සහ BucketName යන දෙකම සඳහන් කළ යුතුය. එසේ නොමැතිනම් ඔබට ප්‍රති .ල නොලැබෙනු ඇත. ඔබ වෙනස් කිරීමට අවශ්ය සියළු ඇති --start-date, --end-timeහා Value=toukakoukan.com.


නියම කිරීම --start-dateසහ --end-timeඅතින් කිරීම වළක්වා ගැනීමට ඔබට භාවිතා කළ හැකි bash ස්ක්‍රිප්ටයක් මෙන්න .

#!/bin/bash
bucket=$1
region=$2
now=$(date +%s)
aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time "$(echo "$now - 86400" | bc)" --end-time "$now" --period 86400 --statistics Average --region $region --metric-name BucketSizeBytes --dimensions Name=BucketName,Value="$bucket" Name=StorageType,Value=StandardStorage

26
හෝ CloudWatch කොන්සෝලය තුළ : (කලාපය තෝරන්න>) ප්‍රමිතික> S3
හැලිල් Özgür

3
මෙය බොහෝ දුරට පහසුම හා වේගවත්ම විසඳුමයි. අවාසනාවට පිළිතුර තවමත් ඇත්තේ සිව්වන ස්ථානයේ පමණි.
luk2302

මෙය මගේ බාල්දිය සඳහා මිලියන 10 + වස්තු සමඟ වැඩ කළේය. නමුත් bash ස්ක්‍රිප්ට් කිසිවක් ආපසු ලබා දුන්නේ නැත, GUI වෙත යාමට සිදුවිය).
පෙටා

1
ඔබට කලාපය ද වෙනස් කළ යුතු බව සැලකිල්ලට ගත යුතුය
මජික්මන්

මැයි 2018: ස්ක්‍රිප්ට් දෝෂ සමඟInvalid value ('1525354418') for param timestamp:StartTime of type timestamp
anneb

108

s3cmd ට මෙය කළ හැකිය:

s3cmd du s3://bucket-name


ස්තූතියි. මෙන්න වේලාව ටිකක්. S3ql අඩු කළ ගොනු පද්ධතියක් ඇති බාල්දියක, ගිගාබයිට් 33 ක් පමණ භාවිතා නොකරන ලද දත්ත භාවිතා කරන අතර, වස්තු 93000 ක් පමණ භාවිතා කරමින්, s3cmd du පිළිතුර ගණනය කිරීමට මිනිත්තු 4 ක් පමණ ගත විය. මෙහි වෙනත් තැනක විස්තර කර ඇති php වැනි වෙනත් ප්‍රවේශයන් සමඟ එය සැසඳෙන්නේ කෙසේදැයි දැන ගැනීමට මට කුතුහලයක් ඇත.
nealmcb

1
එය මන්දගාමී වන්නේ S3 ListObjects API ඇමතුම මඟින් වස්තු 1000 ක පිටු වල වස්තු නැවත ලබා දෙන බැවිනි. I / O බොහෝ දුරට සීමාකාරී සාධකය බැවින් ඕනෑම විසඳුමක් වස්තු 93000 ට වඩා මන්දගාමී වනු ඇතැයි මම සිතමි.
ඩේවිඩ් ස්නබෙල්-කව්න්ට්

12
s4cmd ට ද එම දේම කළ හැකි අතර, ප්‍රති -ලය වේගයෙන් ගණනය කිරීම සඳහා S3 හි API වෙත කරන ලද ඉල්ලීම් බහු-නූල් දැමීමේ අමතර වාසිය සමඟ. මෙවලම මෑතකදී යාවත්කාලීන කර නැත, නමුත් අන්තර්ජාලය හරහා යන අයට එය ප්‍රයෝජනවත් විය හැකිය.
නික් චම්මාස්

s4cmd මා වෙනුවෙන් 0 ක් ආපසු BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format.ලබා දෙන අතර ලොකු අකුරු සහිත බාල්දි සඳහා ආපසු එයි .
ලකිටු

23

ඔබ භාවිත වාර්තාවක් බාගත කරන්නේ නම් , ඔබට TimedStorage-ByteHrsක්ෂේත්‍රය සඳහා දෛනික අගයන් ප්‍රස්ථාර ගත කළ හැකිය .

ඔබට එම අංකය GiB හි අවශ්‍ය නම්, බෙදන්න 1024 * 1024 * 1024 * 24(එය පැය 24 ක චක්‍රයක් සඳහා GiB- පැය). ඔබට අංකය බයිට් වලින් අවශ්‍ය නම්, 24 න් බෙදන්න.


20

නිල AWS s3 විධාන රේඛා මෙවලම් භාවිතා කිරීම:

aws s3 ls s3://bucket/folder --recursive | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

මෙම වඩා හොඳ ආඥාවයි, හුදෙක් පහත දැක්වෙන පරාමිතියන් 3 ක් එකතු --summarize --human-readable --recursiveපසු aws s3 ls. --summarizeසම්පූර්ණ ප්‍රමාණයට හොඳ ස්පර්ශයක් ලබා දුන්නද අවශ්‍ය නොවේ.

aws s3 ls s3://bucket/folder --summarize --human-readable --recursive

1
කරුණාකර ඇමසන් ඇත්ත වශයෙන්ම මෙය සඳහන් කරන ස්ථානයට සබැඳිය සපයන්න. මට එය සොයාගත නොහැක.
ලොබි



4
මෙම පිළිතුර මට හොඳම හා වේගවත්ම වැඩ කළේය.
මිරෝ

2
හොඳම සහ වේගවත්ම පිළිතුර!
PlagTag

13

s4cmd යනු මා සොයාගත් වේගවත්ම ක්‍රමයයි (පයිතන් හි ලියා ඇති විධාන රේඛා උපයෝගීතාව):

pip install s4cmd

බහු නූල් භාවිතා කරමින් සම්පූර්ණ බාල්දි ප්‍රමාණය ගණනය කිරීමට දැන්:

s4cmd du -r s3://bucket-name

7
නැත, s4cmd du s3://123123drinkබාල්දියේ ප්‍රමාණය සරලව ආපසු නොදෙනු ඇත. බාල්දියේ ප්‍රමාණය ලබා ගැනීම සඳහා ඔබ පුනරාවර්තනය එකතු කරන්න -r, මේ ආකාරයට: s4cmd du -r s3: // 123123drink
George Chalhoub

1
ඔව්, හොඳ කරුණක් ukBukLau ( -rමිනිසුන් S3 මත අනුකලනය කළ ෆෝල්ඩර භාවිතා කරන විට ව්‍යාකූල වීම වළක්වා ගැනීම සඳහා ඉහත උදාහරණයට එකතු කරන ලදි ).
බ්‍රෙන්ට් ෆවුස්ට්

8

ඔබට AWS කොන්සෝලය වෙතින් ප්‍රමාණය ලබා ගැනීමට අවශ්‍ය නම්:

  1. S3 වෙත ගොස් බාල්දියේ නම මත ක්ලික් කරන්න
  2. "කළමනාකරණ" පටිත්ත තෝරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

  1. ප්‍රමිතික පටිත්ත තෝරන්න

පෙරනිමියෙන් ඔබ බාල්දියේ ගබඩා මෙට්‍රික් දැකිය යුතුය


ප්‍රස්ථාරයේ මම කිසිවක් දුටුවේ නැත. මගේ මූසිකය ප්‍රස්ථාරයට ඉහලින් තැබූ විට පමණක් මා දුටුවේ තිත් දිස්වන අතර එය දෛනික එකතුවයි.
ටයිලර් කොලියර්

6

ඒ නිසා ඒපීඅයි හරහා ට්‍රොල් කර එකම විමසුම් කිහිපයක් වාදනය කිරීමෙන් එස් 3 බාල්දියක සමස්ත අන්තර්ගතය එක ඉල්ලීමකින් නිපදවනු ඇති අතර එය නාමාවලි වලට බැසීමට අවශ්‍ය නොවේ. ප්‍රති results ල සඳහා විවිධ XML මූලද්‍රව්‍යයන් සාරාංශ කිරීම අවශ්‍ය වන අතර නැවත නැවත ඇමතුම් ලබා ගත නොහැක. මා සතුව අයිතම දහස් ගණනක් ඇති නියැදි බාල්දියක් නොමැත, එබැවින් එය කොතරම් හොඳින් පරිමාණය වේ දැයි මම නොදනිමි, නමුත් එය සාධාරණ ලෙස පෙනේ.


මෙය හොඳම විකල්පය බව පෙනේ. මෙම පෝස්ට් දුර්වල ලෙස පරිමාණය කළහොත් අනාගතයේදී එය යාවත්කාලීන කරනු ඇති අතර මට වෙනත් දෙයක් කිරීමට අවශ්‍ය වේ. අමු API ප්‍රති
ගැරට් හීටන්

එය පළමු අයිතම 1000 ට පමණක් සීමා නොවේ ද?
චාලි ෂ්ලීසර්

6

මම මෙම ත්‍රෙඩ් එකේ කලින් ලැයිස්තුගත කර ඇති S3 REST / Curl API භාවිතා කර මෙය කළෙමි:

<?php
if (!class_exists('S3')) require_once 'S3.php';

// Instantiate the class
$s3 = new S3('accessKeyId', 'secretAccessKey');
S3::$useSSL = false;

// List your buckets:
echo "S3::listBuckets(): ";
echo '<pre>' . print_r($s3->listBuckets(), 1). '</pre>';

$totalSize = 0;
$objects = $s3->getBucket('name-of-your-bucket');
foreach ($objects as $name => $val) {
    // If you want to get the size of a particular directory, you can do
    // only that.
    // if (strpos($name, 'directory/sub-directory') !== false)
    $totalSize += $val['size'];
}

echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
?>

6

ඔබට s3cmd උපයෝගීතාව භාවිතා කළ හැකිය, උදා:

s3cmd du -H s3://Mybucket
97G      s3://Mybucket/

4

... ටිකක් පරක්කු නමුත්, මම සොයාගත් හොඳම ක්‍රමය AWS ද්වාරයෙහි වාර්තා භාවිතා කිරීමයි. වාර්තා බාගත කිරීම හා විග්‍රහ කිරීම සඳහා මම PHP පන්තියක් හැදුවෙමි. එය සමඟ ඔබට එක් එක් බාල්දිය සඳහා මුළු වස්තු ගණන, GB හෝ බයිට් පැයවල මුළු ප්‍රමාණය සහ තවත් බොහෝ දේ ලබා ගත හැකිය.

එය පරීක්ෂා කර බලා ප්‍රයෝජනවත් දැයි මට දන්වන්න

AmazonTools


ටිකක් සිත් ඇදගන්නා සුළු වුවත් මෙය සිත්ගන්නා විසඳුමකි. ඇමේසන් ඔවුන්ගේ වෙබ් අඩවිය වෙනස් කරන්නේ නම් / එය බිඳ වැටීම ගැන කනස්සල්ලට පත්වේ, නමුත් මට ප්‍රමාණවත් තරම් වස්තූන් ඇති විට මෙය අත්හදා බැලීමට සිදු විය හැකිය. මෙම ප්‍රවේශයේ තවත් වාසියක් නම් ඔබ කිසිදු API ඇමතුම් සඳහා ගාස්තු අය නොකිරීමයි.
ගැරට් හීටන්

. . . එය උපකල්පනයක් වන නමුත්, ඇමේසන් ඔවුන්ගේ වෙබ් අඩවියේ පෙනුම වෙනස් කළහොත්, ඔවුන් පසුපස අන්තය බොහෝ වෙනස් කරනු ඇතැයි මම සැක කරමි, එයින් අදහස් වන්නේ වර්තමාන GET සහ POST විමසුම් ක්‍රියාත්මක විය යුතු බවයි. මම බොහෝ විට එය භාවිතා කරන බැවින් එය කෙසේ හෝ කැඩී ගියහොත් මම පන්තිය පවත්වාගෙන යන්නෙමි.

3

විශාල බාල්දි සඳහා S3 භාවිත වාර්තාව භාවිතා කිරීමට මම නිර්දේශ කරමි , එය ලබා ගන්නේ කෙසේද යන්න බලන්න මගේ මූලික වශයෙන් ඔබ S3 සේවාව සඳහා භාවිත වාර්තාව අවසාන දිනය සඳහා කාලානුරූපී ආචයනය - බයිට් පැය සමඟ බාගත කර තැටි භාවිතය ලබා ගැනීම සඳහා එය විග්‍රහ කරන්න.

cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n

3

AWS ප්‍රලේඛනය එය කරන්නේ කෙසේදැයි ඔබට කියයි:

aws s3 ls s3://bucketnanme --recursive --human-readable --summarize

ඔබට ලැබෙන ප්‍රතිදානය මෙයයි:

2016-05-17 00:28:14    0 Bytes folder/
2016-05-17 00:30:57    4.7 KiB folder/file.jpg
2016-05-17 00:31:00  108.9 KiB folder/file.png
2016-05-17 00:31:03   43.2 KiB folder/file.jpg
2016-05-17 00:31:08  158.6 KiB folder/file.jpg
2016-05-17 00:31:12   70.6 KiB folder/file.png
2016-05-17 00:43:50   64.1 KiB folder/folder/folder/folder/file.jpg

Total Objects: 7

   Total Size: 450.1 KiB

2

සැබවින්ම අඩු තාක්‍ෂණික ප්‍රවේශයක් සඳහා: ඔබ සඳහා ප්‍රමාණය ගණනය කළ හැකි S3 ග්‍රාහකයක් භාවිතා කරන්න. මම Panic's Transmit භාවිතා කරමි, බාල්දියක් මත ක්ලික් කරන්න, "තොරතුරු ලබා ගන්න" සහ "ගණනය කරන්න" බොත්තම ක්ලික් කරන්න. වෙනත් ක්‍රම සම්බන්ධයෙන් එය කෙතරම් වේගවත් හෝ නිවැරදිදැයි මට විශ්වාස නැත, නමුත් එය මා බලාපොරොත්තු වූ ප්‍රමාණය ආපසු ලබා දෙන බව පෙනේ.


2

බොහෝ පිළිතුරු ඇති බැවින්, මම සිතුවේ මම මගේම දෑ සමඟ සම්බන්ධ වනු ඇති බවයි. මම LINQPad භාවිතා කරමින් C # හි මගේ ක්‍රියාත්මක කිරීම ලිවීය. ඔබට විමසීමට අවශ්‍ය ප්‍රවේශ යතුර, රහස් යතුර, කලාපීය අන්ත ලක්ෂ්‍යය සහ බාල්දි නාමය පිටපත් කරන්න, අලවන්න, ඇතුළු කරන්න. එසේම, AWSSDK නුගට් පැකේජය එක් කිරීමට වග බලා ගන්න.

මගේ එක් බාල්දියකට එරෙහිව පරීක්ෂා කිරීමෙන්, එය මට 128075 ක් සහ 70.6GB ප්‍රමාණයක් ලබා දුන්නේය. එය 99.9999% ක් නිවැරදි බව මම දනිමි, එබැවින් ප්‍රති .ලය සමඟ මම හොඳයි.

void Main() {
    var s3Client = new AmazonS3Client("accessKey", "secretKey", RegionEndpoint.???);
    var stop = false;
    var objectsCount = 0;
    var objectsSize = 0L;
    var nextMarker = string.Empty;

    while (!stop) {
        var response = s3Client.ListObjects(new ListObjectsRequest {
            BucketName = "",
            Marker = nextMarker
        });

        objectsCount += response.S3Objects.Count;
        objectsSize += response.S3Objects.Sum(
            o =>
                o.Size);
        nextMarker = response.NextMarker;
        stop = response.S3Objects.Count < 1000;
    }

    new {
        Count = objectsCount,
        Size = objectsSize.BytesToString()
    }.Dump();
}

static class Int64Extensions {
    public static string BytesToString(
        this long byteCount) {
        if (byteCount == 0) {
            return "0B";
        }

        var suffix = new string[] { "B", "KB", "MB", "GB", "TB", "PB", "EB" };
        var longBytes = Math.Abs(byteCount);
        var place = Convert.ToInt32(Math.Floor(Math.Log(longBytes, 1024)));
        var number = Math.Round(longBytes / Math.Pow(1024, place), 1);

        return string.Format("{0}{1}", Math.Sign(byteCount) * number, suffix[place]);
    }
}

1

මෙය පැරණි ප්‍රශ්නයක් බව මම දනිමි, නමුත් මෙහි පවර්ෂෙල් උදාහරණයක් ඇත:

Get-S3Object -BucketName <buckename> | select key, size | foreach {$A += $_.size}

$A බාල්දියේ ප්‍රමාණය අඩංගු වන අතර ඔබට බාල්දියක නිශ්චිත ෆෝල්ඩරයක ප්‍රමාණය අවශ්‍ය නම් යතුරු නාම පරාමිතියක් ඇත.


මුලින්ම Get-object..line ධාවනය කර $ A (පවර්ෂෙල් ගැන හුරු නැති අය සඳහා) ධාවනය කරන්න
Faiz

1

සියලුම බාල්දි ප්‍රමාණය පරීක්ෂා කිරීමට මෙම bash ස්ක්‍රිප්ට් එක උත්සාහ කරන්න

s3list=`aws s3 ls | awk  '{print $3}'`
for s3dir in $s3list
do
    echo $s3dir
    aws s3 ls "s3://$s3dir"  --recursive --human-readable --summarize | grep "Total Size"
done

මෙය විශිෂ්ටයි.
මයික් බාර්ලෝ - බාර්ඩෙව්

ප්‍රතිදානය විචල්‍යයකින් ග්‍රහණය කර ගැනීම මඟින් ඔබට එය හරහා ලූපයක් ලබා ගත හැකිය.
ත්‍රිත්ව

1

ඔබට භාවිතා කළ හැකිය s3cmd:

s3cmd du s3://Mybucket -H

හෝ

s3cmd du s3://Mybucket --human-readable

එය සම්පූර්ණ වස්තූන් සහ බාල්දියේ ප්‍රමාණය ඉතා කියවිය හැකි ආකාරයකින් ලබා දෙයි.


duගමන් කිරීම සියලු වස්තු ලැයිස්තුගත කරන්නේද නැතහොත් පාර-දත්ත ලබා ගන්නේද? වාර්තා අනුවාදයේ api අනුවාදයකට හෝ
aws

0

හේයි, https://s3search.p3-labs.com/ හි AWS S3 සඳහා මෙටා ඩේටා සෙවුම් මෙවලමක් ඇත .මෙම මෙවලම පාර-දත්ත සෙවීම සමඟ බාල්දියක ඇති වස්තූන් පිළිබඳ සංඛ්‍යාන ලබා දෙයි.


0

එසේම හන්සෝ එස් 3 මෙවලම් මෙය කරයි. ස්ථාපනය කිරීමෙන් පසු ඔබට කළ හැක්කේ:

s3ls -s -H bucketname

නමුත් මෙය සේවාදායකයාගේ පැත්තෙන් සාරාංශගත කර ඇති අතර AWS API හරහා ලබා නොගනී.


0

විසින් Cloudberry වැඩසටහන බාල්දිය ප්රමාණය, ෆෝල්ඩර සහ මුළු ගොනු ප්රමාණය, දකුණු බාල්දිය මත "ගුණාංග" ක්ලික් ලැයිස්තු ගත කිරීම සඳහා ද හැකි ය.


0

වින්ඩෝස් සහ ඕඑස්එක්ස් හි විධාන රේඛාව භාවිතා කිරීමට ඔබට අවශ්‍ය නැතිනම්, සයිබර්ඩක් නමින් පොදු අරමුණු දුරස්ථ ගොනු කළමනාකරණ යෙදුමක් තිබේ . ඔබගේ ප්‍රවේශය / රහස් යතුරු යුගලය සමඟ S3 වෙත පිවිසෙන්න, නාමාවලිය මත දකුණු-ක්ලික් කරන්න, ක්ලික් කරන්න Calculate.


0

මම බාෂ් ස්ක්‍රිප්ට් එකක් ලිව්වා, s3-du.sh, එය s3ls සමඟ බාල්දියේ ලිපිගොනු ලැයිස්තුගත කරයි, සහ ගොනු ගණන මුද්‍රණය කරයි,

s3-du.sh testbucket.jonzobrist.com
149 files in bucket testbucket.jonzobrist.com
11760850920 B
11485205 KB
11216 MB
10 GB

සම්පූර්ණ පිටපත:

#!/bin/bash

if [ “${1}” ]
then
NUM=0
COUNT=0
for N in `s3ls ${1} | awk ‘{print $11}’ | grep [0-9]`
do
NUM=`expr $NUM + $N`
((COUNT++))
done
KB=`expr ${NUM} / 1024`
MB=`expr ${NUM} / 1048576`
GB=`expr ${NUM} / 1073741824`
echo “${COUNT} files in bucket ${1}”
echo “${NUM} B”
echo “${KB} KB”
echo “${MB} MB”
echo “${GB} GB”
else
echo “Usage : ${0} s3-bucket”
exit 1
fi    

ඇමසන් විසින් නාමාවලි නාමය සහ එහි අන්තර්ගතයේ විශාලත්වය නැවත ලබා දෙන බැවින් එය උප බහලුම් ප්‍රමාණය කරයි.


0

CloudWatch සතුව සුපුරුදු S3 සේවා උපකරණ පුවරුවක් ඇති අතර එය "බාල්දි ප්‍රමාණයේ බයිට් සාමාන්‍යය" නම් ප්‍රස්ථාරයක ලැයිස්තුගත කර ඇත. AWS කොන්සෝලය වෙත දැනටමත් පිවිසී ඇති ඕනෑම කෙනෙකුට මෙම සබැඳිය ක්‍රියා කරනු ඇතැයි මම සිතමි :


-1

පහත දැක්වෙන ක්‍රමය බාල්දියේ මුළු ප්‍රමාණය ලබා ගැනීමට AWS PHP SDK භාවිතා කරයි.

// make sure that you are using correct region (where the bucket is) to get new Amazon S3 client
$client = \Aws\S3\S3Client::factory(array('region' => $region));

// check if bucket exists
if (!$client->doesBucketExist($bucket, $accept403 = true)) {
    return false;
}
// get bucket objects
$objects = $client->getBucket(array('Bucket' => $bucket));

$total_size_bytes = 0;
$contents = $objects['Contents'];

// iterate through all contents to get total size
foreach ($contents as $key => $value) {
   $total_bytes += $value['Size'];
}
$total_size_gb = $total_size_bytes / 1024 / 1024 / 1024;

-1

මෙය මට වැඩ කරයි ..

aws s3 ls s3://bucket/folder/ --recursive | awk '{sz+=$3} END {print sz/1024/1024 "MB"}'

3
ඔබට තවත් විස්තර කිහිපයක් එකතු කළ හැකිද?
පියරේ.වරියන්ස්

1
මෙය අත්‍යවශ්‍යයෙන්ම වසරකට පමණ පෙර පළ කරන ලද තවත් පිළිතුරකට සමාන විසඳුමකි .
ලුවී
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.