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
安装程序), grep
和awk
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存储桶的大小:
- 点击S3存储桶名称
- select“pipe理”选项卡
- 点击“指标”导航button
- 默认情况下,您应该看到存储桶的存储度量标准
希望这可以帮助。
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]
此外, Cyberduck方便地允许计算桶或文件夹的大小。
迷你约翰的回答完全为我工作! 真棒…不得不添加
--region eu-west-1
来自欧洲
这是一个古老的调查,但是因为我正在寻找答案,所以我跑过去了。 一些答案让我记得我使用S3浏览器来pipe理数据。 您可以点击一个存储桶并点击属性,并显示总数。 很简单。 我强烈推荐浏览器: https : //s3browser.com/default.aspx?v=6-1-1&fam=x64
那么,如果你喜欢人性化的用户界面,你也可以通过S3客户端来实现。
我使用CrossFTP ,这是免费的,跨平台的,在那里你可以右键点击文件夹目录 – >select“属性…” – >点击“计算”button旁边的大小和瞧。
我使用云龟来获得单个桶的大小。 如果桶大小超过100 Gb,那么显示大小将需要一些时间。 云乌龟是免费的。