谷歌云存储:什么是最简单的方法来更新所有子文件夹下的所有文件的时间戳
问题描述:
我有以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
(和遍历所有对象你想这样做)。 这是一个快速(仅限元数据)操作,它将使用当前时间戳创建新一代的每个对象。
请注意,如果您在存储桶上启用了版本控制,则会为您以这种方式复制每个文件创建额外版本。