【问题标题】:How to find zero byte files in Amazon S3如何在 Amazon S3 中查找零字节文件
【发布时间】:2012-05-31 11:34:37
【问题描述】:

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

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

find . -size 0 -type f

【问题讨论】:

    标签: amazon-s3 s3cmd


    【解决方案1】:

    将 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
    

    内存方面,这应该没问题,因为它是一个简单的存储桶列表。

    【讨论】:

    • 这也适用于 awscli 包。语法为aws s3 ls --recursive s3://bucketname | awk '{if ($3 == 0) print $4}'
    【解决方案2】:

    只需使用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 限制)请求文件元数据(不是实际文件内容),并且它使用生成器,因此内存使用量很小。

    【讨论】:

    • 什么是boto?愿意分享吗?
    【解决方案3】:

    JMSE 查询:

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

    【讨论】:

      【解决方案4】:

      在 amazon s3 上没有直接搜索大小为零字节的文件的过程。您可以通过列出所有对象然后根据大小对这些项目进行排序来做到这一点,然后您可以将所有零文件大小放在一起。

      如果您想获取大小为零的所有文件的列表,那么您可以使用存储桶资源管理器并列出所选存储桶的对象,然后单击大小标题(按大小排序)它将把零字节大小的文件放在一起。

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

      【讨论】:

      • 我真的有很多文件,会不会导致内存耗尽?
      • 除了下载或使用 S3 api 并同步到数据库之外,还有更好的解决方案。
      【解决方案5】:

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

      hdfs dfs -ls -R s3a://bucket_path/ | grep '^-' | awk -F " " '{if ($4 == 0) print $4, $7}'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        • 2012-11-17
        • 1970-01-01
        • 2018-08-30
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多