2016-09-19 175 views
0

我想将多个.gz文件从一个存储桶复制到另一个存储桶。文件名称模式的前缀为'Logs_',后缀的日期类似'20160909',因此完整文件名为Logs_2016090.gz,Logs_20160908.gz等。我想将所有以Logs_开头的文件从一个gcs桶复制到另一个gcs桶。对于这个我使用通配符*在像日志_ *结束GZ为如下复制操作:“”将多个.gz文件从一个GCS存储桶复制到另一个存储桶(使用Java)

Storage.Objects.Copy request = 
      storageService 
       .objects() 
       .copy("source_bucket", "Logs_*.gz", "destination_bucket", ".", content); 

上面,我是用因为所有文件都必须复制到destination_bucket,所以我不能在那里指定单个文件名。不幸的是,这段代码不起作用,并且该文件不存在错误。我不确定这里需要做什么改变。任何java链接或任何一段代码都会有帮助。谢谢 !!

回答

1

尽管gsutil命令行实用程序高兴地支持通配符,但GCS API本身是低级别的命令,而不是。 storage.objects.copy方法必须有一个精确的源和一个精确的目标。

我推荐以下之一:

  • 使用小脚本调用gsutil,或
  • 拨打电话storage.objects.list得到所有匹配的源对象的名称,然后在它们之间迭代,请为每个文件复制副本,或者
  • 如果您处理的压缩文件数量超过10 TB,请考虑使用Google的云端存储传输服务来复制文件。
+0

我正在循环浏览文件列表以一次传送一个文件。感谢您查看此信息并分享有价值的信息。 – Programmer

相关问题