Google 云存储:更新所有子文件夹下所有文件的时间戳的最简单方法是什么

Google Cloud Storage : What is the easiest way to update timestamp of all files under all subfolders

我有 root-dir/yyyy/mm/dd 形式的日期文件夹 下面有这么多文件。

我想更新特定日期范围内所有文件的时间戳, 例如 2 周即。 14 个文件夹,这样这些文件就可以被我的文件流数据摄取过程获取。

实现此目的最简单的方法是什么? UI 控制台有办法吗?还是通过 gsutil? 请帮忙

GCS 对象是不可变的,因此 "update" 时间戳的唯一方法是将每个对象复制到自身之上,例如,使用:

gsutil cp gs://your-bucket/object1 gs://your-bucket/object1

(并遍历所有你想要这样做的对象)。 这是一个快速(仅元数据)操作,它将创建具有当前时间戳的每个对象的新一代。

请注意,如果您在存储桶上启用了版本控制,那么这样做将为您以这种方式复制的每个文件创建一个额外的版本。

当您说 "folders in the form of root-dir/yyyy/mm/dd" 时,您的意思是要将那些名称如 gs://my-bucket/root-dir/2016/12/25/christmas.jpg 的对象复制到您的存储桶中吗?如果没有,请参阅 Mike 的回答;但如果它们是用该模式命名的,而您只想重命名它们,则可以使用 gsutil 的 mv 命令重命名具有该前缀的每个对象:

$ export BKT=my-bucket
$ gsutil ls gs://$BKT/**
gs://my-bucket/2015/12/31/newyears.jpg
gs://my-bucket/2016/01/15/file1.txt
gs://my-bucket/2016/01/15/some/file.txt
gs://my-bucket/2016/01/15/yet/another-file.txt

$ gsutil -m mv gs://$BKT/2016/01/15 gs://$BKT/2016/06/20
[...]
Operation completed over 3 objects/12.0 B.

# We can see that the prefixes changed from 2016/01/15 to 2016/06/20
$ gsutil ls gs://$BKT/**
gs://my-bucket/2015/12/31/newyears.jpg
gs://my-bucket/2016/06/20/file1.txt
gs://my-bucket/2016/06/20/some/file.txt
gs://my-bucket/2016/06/20/yet/another-file.txt