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

问题描述:

我有以root-dir/yyyy/mm/dd形式存在的日期文件夹,其中存在如此多的文件。谷歌云存储:什么是最简单的方法来更新所有子文件夹下的所有文件的时间戳

我想更新某些日期范围内的所有文件的时间戳,例如 ,例如2周。 14文件夹,以便这些文件可以通过我的文件 - 流数据摄取过程来获取。

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

当你说“以root-dir/yyyy/mm/dd的形式存在的文件夹”时,你的意思是你是否将这些对象复制到名为gs://my-bucket/root-dir/2016/12/25/christmas.jpg的存储桶中?如果没有,请参阅迈克的回答;但如果它们以该模式命名并且只是想重命名它们,则可以使用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 

GCS对象是不可改变的,所以唯一的办法,以“更新”时间戳将每个对象复制在其本身上,例如,使用:

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

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

请注意,如果您在存储桶上启用了版本控制,则会为您以这种方式复制每个文件创建额外版本。