AWS S3:如何查看正在使用多less磁盘空间?

我有AWS账户。 我正在使用S3来存储来自不同服务器的备份。 问题是在AWS控制台中有没有关于我的S3云上有多less磁盘空间正在使用的信息?

谢谢

Yippe – AWS CLI的更新允许您通过存储桶recursion地执行l …

aws s3 ls s3://<bucketname> --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}' 

我不确定这是什么时候添加到AWSCLI,因为原来的问题是3年前,但命令行工具通过运行提供了一个很好的总结:

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

s3cmd可以通过运行s3cmd du来显示你,可以将桶名作为parameter passing。

AWS CLI现在支持带有JMESPathexpression式的--query参数。

这意味着您可以使用sum(Contents[].Size)list-objects给出的大小值进行sum(Contents[].Size)并计算length(Contents[])

这可以使用官方AWS CLI如下运行,并于2014年2月推出

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

在具有python (使用pip安装程序), grepawk Linux机器上,安装AWS CLI(用于EC2,S3和许多其他服务的命令行工具)

 sudo pip install awscli 

然后在您的主文件夹中创build一个.awssecret文件,内容如下(根据需要调整密钥,秘密和区域):

 [default] aws_access_key_id=<YOUR_KEY_HERE> aws_secret_access_key=<YOUR_SECRET_KEY_HERE> region=<AWS_REGION> 

只能将此文件读写到您的用户:

 sudo chmod 600 .awssecret 

并将其导出到您的环境中

  export AWS_CONFIG_FILE=/home/<your_name>/.awssecret 

然后在terminal中运行(这是一个单行命令,由\分开,以便在这里阅读):

 aws s3 ls s3://<bucket_name>/foo/bar | \ grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | \ awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}' 
  • aws部分列出了桶(或者可选的“子文件夹”)
  • grep部分删除(使用-v )匹配正则expression式的行(使用-E )。 ^$表示空白行, --表示aws s3 ls输出中的分隔线
  • 最后一个awk简单地添加到所有输出的第三列(大小以KB为单位),然后显示在最后

注意这个命令适用于当前的桶或“文件夹”,而不是recursion的

https://serverfault.com/questions/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

Vic回复

 <?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'; ?> 

通过API(aws cli或s4cmd)获取大桶大小相当缓慢。 以下是我的HowTo解释如何使用bash单行parsing来parsingS3使用报告 :

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

云手表还允许您为S3存储桶创build度量标准。 它通过大小和对象数显示您的指标。 服务>pipe理工具>云手表。 select您的S3存储区所在的区域,大小和对象数量指标将在这些可用指标之间。

除了克里斯托弗的答案。

如果您需要统计版本化桶的总大小,请使用:

 aws s3api list-object-versions --bucket BUCKETNAME --output json --query "[sum(Versions[].Size)]" 

它计数最新和存档的版本。

使用AWS Console查找S3存储桶的大小:

  1. 点击S3存储桶名称
  2. select“pipe理”选项卡
  3. 点击“指标”导航button
  4. 默认情况下,您应该看到存储桶的存储度量标准

希望这可以帮助。

AWS控制台不会显示此消息,但您可以使用Bucket Explorer或Cloudberry Explorer来获取存储桶的总大小。 两者都有可用的免费版本。

注意:这些产品仍然需要获得每个物体的大小,因此可能需要很长时间来处理大量的物体。

根据@ cudds的回答:

 function s3size() { for path in $*; do size=$(aws s3 ls "s3://$path" --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{printf "%.2fGb\n", (total/1024/1024/1024)}') echo "[s3://$path]=[$size]" done } ... $ s3size bucket-a bucket-b/dir [s3://bucket-a]=[24.04Gb] [s3://bucket-b/dir]=[26.69Gb] 

此外, Cyber​​duck方便地允许计算桶或文件夹的大小。

迷你约翰的回答完全为我工作! 真棒…不得不添加

 --region eu-west-1 

来自欧洲

这是一个古老的调查,但是因为我正在寻找答案,所以我跑过去了。 一些答案让我记得我使用S3浏览器来pipe理数据。 您可以点击一个存储桶并点击属性,并显示总数。 很简单。 我强烈推荐浏览器: https : //s3browser.com/default.aspx?v=6-1-1&fam=x64

那么,如果你喜欢人性化的用户界面,你也可以通过S3客户端来实现。

我使用CrossFTP ,这是免费的,跨平台的,在那里你可以右键点击文件夹目录 – >select“属性…” – >点击“计算”button旁边的大小和瞧。

我使用云龟来获得单个桶的大小。 如果桶大小超过100 Gb,那么显示大小将需要一些时间。 云乌龟是免费的。