如何在Amazon S3中找到零字节文件

时间:2012-05-31 11:34:37

标签: amazon-s3 s3cmd

有没有办法在Amazon S3中以编程方式查找零字节文件?

铲斗总大小超过100G,
我不太可能同步回服务器,然后做一个

find . -size 0 -type f

5 个答案:

答案 0 :(得分:10)

将s3cmd与awk结合使用应该很容易。

注意:s3cmd输出4列,日期,时间,大小和名称。您希望将大小(第3列)与0匹配,并输出对象名称(第4列)。这应该可以解决问题......

$ s3cmd ls -r s3://bucketname | awk '{if ($3 == 0) print $4}'
s3://bucketname/root/
s3://bucketname/root/e

如果您想查看所有信息,只需删除4美元,以便只显示打印。

$ s3cmd ls -r s3://bucketname | awk '{if ($3 == 0) print}' 
2013-03-04 06:28         0   s3://bucketname/root/
2013-03-04 06:28         0   s3://bucketname/root/e

记忆方面,这应该没问题,因为这是一个简单的桶清单。

答案 1 :(得分:3)

在亚马逊s3上没有直接搜索大小为零字节的文件的过程。您可以通过列出所有对象然后根据大小对这些项进行排序来实现,然后您可以一起获得所有零文件大小。

如果你想获得大小为零的所有文件的列表,那么你可以使用Bucket Explorer并列出所选存储桶的对象,然后点击大小标题(按大小排序)它将文件大小保持为零字节。< / p>

披露:我是Bucket Explorer的开发者。

答案 2 :(得分:1)

只需使用Boto

from boto import S3Connection
aws_access_key = ''
aws_secret_key = ''
bucket_name = ''
s3_conn = S3Connection(aws_access_key, aws_secret_key)
s3_conn.get_bucket(bucket_name)
for key in bucket.list():
    if key.size == 0:
        print(key.key)

关于数字文件,Boto每次请求1000个文件元数据(不是实际文件内容)(aws限制),并且它使用生成器,因此内存使用量很小。

答案 3 :(得分:0)

使用基本模式匹配查找零长度文件:

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>

答案 4 :(得分:0)

JMSE查询:

aws s3api list-objects --bucket $BUCKET --prefix $PREFIX --output json --query 'Contents[?Size==`0`]'