【问题标题】:Exclude small files when using gsutil rsync使用 gsutil rsync 时排除小文件
【发布时间】:2020-03-20 23:12:58
【问题描述】:

我想使用gsutil rsync 将给定文件夹的文件上传到存储桶。但是,我不想上传所有文件,而是想排除小于一定大小的文件。 Unix rsync 命令提供了选项--min-size=SIZE。 gsutil 工具是否有等价物?如果没有,是否有一种简单的方法可以排除小文件?

【问题讨论】:

    标签: google-cloud-platform gsutil


    【解决方案1】:

    好的,所以我找到的最简单的解决方案是将小文件移动到子目录中,然后使用rsync(不带-r 选项)。移动文件的代码:

    def filter_images(source, limit):
        imgs = [img for img in glob(join(source, "*.tiff")) if (getsize(img)/(1024*1024.0)) < limit]
        if len(imgs) == 0:
            return
    
        filtered_dir = join(source, "filtered")
        makedirs(filtered_dir)
        for img in imgs:
            shutil.move(img, filtered_dir)
    

    【讨论】:

      【解决方案2】:

      你没有这个选项。您可以通过编写脚本手动执行并逐个文件发送。但这不是很有效。我建议你这个命令:

      find . -type f -size -4000c | xargs -I{} gsutil cp {} gs://my-bucket/path
      

      这里只会复制低于 4k 的文件。这里是查找单位列表

      c for bytes
      w for two-byte words
      k for Kilobytes
      M for Megabytes
      G for Gigabytes
      

      【讨论】:

        猜你喜欢
        • 2019-01-14
        • 2016-05-14
        • 2016-02-15
        • 1970-01-01
        • 2021-09-07
        • 2020-01-24
        • 1970-01-01
        • 2015-06-11
        • 2021-03-29
        相关资源
        最近更新 更多