使用 gsutil rsync 时排除小文件



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

好的,所以我找到的最简单的解决方案是将小文件移动到子目录中,然后使用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)

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

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

最新更新