2016-09-19 61 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

相關問題