2016-09-19 2 views
0

Я хочу скопировать несколько файлов .gz из одного gcs-ведра в другой. Шаблон имени файла имеет префикс как «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 являются командами нижнего уровня и не работают. Метод storage.objects.copy должен иметь один точный источник и один конкретный пункт назначения.

Я рекомендую один из следующих действий:

  • Используйте небольшой скрипт, ссылающегося gsutil или
  • сделать вызов storage.objects.list получить имена всех соответствующих исходных объектов, а затем перебрать их , вызывающая копия для каждого, или
  • Если вы имеете дело с более чем, скажем, 10 ТБ или около того gzip-файлов, подумайте о том, чтобы использовать Службу передачи облачных данных Google для копирования файлов.
+0

Я перебираю список файлов для передачи по одному. Спасибо, что посмотрели на это и обменялись ценной информацией. – Programmer