使用gsutil rsync时不包含小文件

问题描述 投票:0回答:2

我想使用gsutil rsync将给定文件夹的文件上传到存储桶。但是,我要排除所有小于特定大小的文件,而不是上传所有文件。 Unix rsync命令提供选项--min-size=SIZE。 gsutil工具是否具有等效功能?如果没有,是否有排除小文件的简便方法?

google-cloud-platform gsutil
2个回答
0
投票

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

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

0
投票

好,所以我找到的最简单的解决方案是将小文件移到子目录中,然后使用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)
© www.soinside.com 2019 - 2024. All rights reserved.