是否有办法找到所有文件/对象在谷歌云存储桶大于一定的大小?



我试图使用du命令,但我不确定如何按文件大小过滤。我试着这样做是为了删除我根本不需要的大文件,而且还在花钱。

GSutil提供了一些对bucket内的对象进行排序的方法,但不是按文件大小排序;您可以使用linux/gsutil命令的组合来帮助您。例如:

列出按大小降序排序的对象:

gsutil ls -lh gs://{bucket} | sort -n -k 1

修改命令:

gsutil ls:列出提供程序、bucket或对象

-l:打印长列表(owner, length)

h:当与-l一起使用时,以人类可读的格式打印对象大小

如果需要递归地执行,则添加-r

linux中的排序命令

-n:对文件进行数字排序

-k 1:对某一列进行排序。例如,使用-k 2对第二列

进行排序

使用python,您可以获得bucket中所有blob的列表,并循环遍历该列表以获得那些大的blob:

from google.cloud import storage
storage_client = storage.Client()
blobs_list = storage_client.list_blobs(bucket_or_name='name_of_your_bucket')
large_files = []
for blob in blobs_list:
if blob.size > 1_000_000:  # size is in bytes
large_files.append(blob.id)

没有本地命令来实现这一点。您需要解析所有的文件(只有元数据,您不需要下载内容)以获得它们的大小并采取相应的行动。

如果您的存储桶包含很多文件,可能需要几个小时。您可以尝试通过前缀对进程进行并行化和分区,例如