使用Java将多个.gz文件从一个GCS存储桶复制到另一个存储桶

时间:2016-09-19 16:42:13

标签: google-cloud-storage

我想将多个.gz文件从一个gcs存储桶复制到另一个存储桶。文件名模式的前缀为'Logs_',后缀为日期,如'20160909',因此完整文件名为Logs_2016090.gz,Logs_20160908.gz等。我想将所有以Logs_开头的文件从一个gcs存储桶复制到另一个gcs存储桶。为此,我在最后使用通配符*,如Logs _ * .gz进行复制操作,如下所示:

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

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

1 个答案:

答案 0 :(得分:1)

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

我推荐以下其中一项:

  • 使用调用gsutil
  • 的小脚本
  • 进行storage.objects.list调用以获取所有匹配的源对象的名称,然后迭代它们,为每个对象调用copy,或者
  • 如果您处理超过10 TB左右的gzip文件,请考虑使用Google的云存储转移服务来复制文件。