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

Google cloud storage 谷歌云存储:更新所有子文件夹下所有文件的时间戳的最简单方法是什么,google-cloud-storage,gsutil,Google Cloud Storage,Gsutil,我有根目录/yyy/mm/dd形式的日期文件夹 下面有很多文件 我想更新属于某个日期范围的所有文件的时间戳, 例如,2周的ie.14文件夹,以便这些文件可以通过我的文件流数据摄取过程拾取 最简单的方法是什么? 在UI控制台中有方法吗?还是通过gsutil? 请帮助GCS对象是不可变的,因此“更新”时间戳的唯一方法是将每个对象复制到其自身之上,例如,使用: gsutil cp gs://your-bucket/object1 gs://your-bucket/object1 (并在所有要执行此操

我有根目录/yyy/mm/dd形式的日期文件夹 下面有很多文件

我想更新属于某个日期范围的所有文件的时间戳, 例如,2周的ie.14文件夹,以便这些文件可以通过我的文件流数据摄取过程拾取

最简单的方法是什么? 在UI控制台中有方法吗?还是通过gsutil?
请帮助

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

gsutil cp gs://your-bucket/object1 gs://your-bucket/object1
(并在所有要执行此操作的对象上循环)。 这是一个快速(仅元数据)操作,它将使用当前时间戳创建新一代的每个对象

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

当您说“根目录形式的文件夹/yyyy/mm/dd”时,您的意思是您正在将这些对象复制到您的bucket中,其名称类似于
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

不幸的是,这个技巧不再有效:CommandException:cp:“X”和“X”是同一个文件-中止。