Переместить файлы под GCS с переименованием - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу написать следующий скрипт bash, который копирует файлы из одного сегмента GCS в другой с опциями переименования.

Моя папка ввода gs://test-rtt-integration/result/frd/*.orc, а папка назначения - gs://test-rtt-integration/recent_files/frd

Переименование скопированного файла должно выполняться на основе имени, предоставленного из gs://test-rtt-integration/complex-files/TAN/recent_files/today/frd после копирования с переименованием.сделано, мне нужно очистить gs://test-rtt-integration/result/frd

Я проверил следующие команды, но они не работают должным образом

NAME = "$(gsutil ls gs://test-rtt-integration/complex-files/TAN/recent_files/today/frd)"
gsutil mv gs://test-rtt-integration/result/frd/*.orc   gs://test-rtt-integration/recent_files/frd/$NAME
gsutil rm -rf gs://test-rtt-integration/result/frd

(все файлы .orc и другие файлы должны быть удалены)

Но это не работает должным образом, так как я должен разделить ИМЯ на основе / и получить последнее разделение, поэтому, если результат разделения называется SPLIT, я должен сделать gsutil mv gs://test-rtt-integration/result/frd/*.orc gs://test-rtt-integration/recent_files/frd/$SPLIT

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 28 февраля 2019

Вопрос немного сбивает с толку.Вы говорите, что хотите переместить файлы из одной корзины Google Cloud Storage в другую, но все операции выполняются в одной корзине под названием test-rtt-integration.

Однако, как только вы получите местоположение файла с помощью команды gsutil ls gs://[BUCKET_NAME]/folder например, gs://[BUCKET_NAME]/folder/[FILENAME].orc, так как часть gs://[BUCKET_NAME]/folder/ всегда одинакова для всех объектов в папке, просто замените ее на null и в конце вы получите только имя объекта в виде [FILENAME].orc и т. Д.

Я не уверен, что это именно то, что вы ищете, но я сам немного кодировал и ясоздали bash-скрипт, который:

  • Получает имя каждого объекта из gs://[BUCKET_NAME]/from папки корзины
  • Копирование всех объектов из папки gs://[BUCKET_NAME]/from корзины в папку gs://[BUCKET_NAME]/to/ корзины
  • Удалить все объекты из gs://[BUCKET_NAME]/from папки с ведром

Внутри есть комментарии, которые объясняют, как каждая операция работает в деталях.Если это не совсем то, что вы ищете, вы можете получить базовое представление о том, как это работает, и реализовать его по-другому, который подойдет вам лучше.Я сам протестировал скрипт в Google Cloud Shell, и он работает.Пример кода можно найти в GitHub .

...