Google云端存储:如何使用gsutil获取存储桶/文件夹中的新文件列表

时间:2017-05-17 06:45:32

标签: google-cloud-storage gsutil

我有一个存储桶/文件夹,每分钟都会有很多文件进入。 如何根据文件时间戳只读取新文件。

例如:列出所有带时间戳的文件> my_timestamp

3 个答案:

答案 0 :(得分:9)

你可以使用一些bash-fu:

gsutil ls -l gs://your-bucket-name | sort -k2n | tail -n1 | awk 'END {$1=$2=""; sub(/^[ \t]+/, ""); print }'

打破了这一点:

  • gsutil ls -l gs://your-bucket-name#抓取存储桶中详细的对象列表
  • sort -k2n#按日期字段中的数字排序
  • tail -n1#抓住最后一行返回
  • awk 'END {$1=$2=""; sub(/^[ \t]+/, ""); print }'#删除前两个cols(大小和日期)和ltrim删除空格

使用Google Cloud SDK v186.0.0,gsutil v4.28

进行测试

答案 1 :(得分:4)

这不是gsutil或GCS API提供的功能,因为无法按时间戳列出对象。

相反,您可以使用GCS Cloud Pub/Sub功能订阅新对象。

答案 2 :(得分:0)

如果您对新文件感兴趣,或者我们可以用另一句话说出目标存储桶中不存在的文件,那么您也可以使用gsutil -n选项,因为它仅复制目标存储桶中不存在的那些文件。

来自文档 https://cloud.google.com/storage/docs/gsutil/commands/cp?hl=ru

无障碍。指定后,目标位置上的现有文件或对象将不会被覆盖。此选项跳过的任何项目都将报告为被跳过。此选项将执行附加的GET请求,以在尝试上载数据之前检查项目是否存在。这样可以节省重新传输的数据,但是额外的HTTP请求可能会使小型对象的传输速度变慢,并且成本更高。

与这种方法一致的是,它会对源存储桶中存在的每个文件发出检查请求