2015-04-29 3 views
2

Допустим, у меня есть следующие файлы в ведре Google Cloud Storage:Перемещение нескольких файлов с GSUtil

file_A1.csv 
file_B2.csv 
file_C3.csv 

Теперь я хочу, чтобы переместить подмножество этих файлов, позволяет говорить file_A1.csv и file_B2.csv. В настоящее время я делаю это вот так:

gsutil mv gs://bucket/file_A1.csv gs://bucket/file_A11.csv 
gsutil mv gs://bucket/file_B2.csv gs://bucket/file_B22.csv 

Этот подход требует двух вызовов более или менее одной и той же команды и перемещает каждый файл отдельно. Я знаю, что если я переведу полный каталог, я могу добавить опцию -m, чтобы ускорить этот процесс. Однако, к сожалению, я просто хочу переместить подмножество всех файлов и оставить остальное нетронутым в ведре.

При перемещении 100 файлов таким образом мне нужно выполнить 100 команд или около того, и это становится довольно трудоемким. У меня есть способ объединить каждый из 100 файлов в одну команду с добавлением опции -m?

+0

У вас есть правило для названия пункта назначения? Это также в файле, или это «повторить последнюю букву существующего файла» или что-то более сложное? –

ответ

1

gsutil не поддерживает это в настоящее время, но то, что вы могли бы сделать, это создать несколько сценариев оболочки, каждый из которых выполняет часть ходов и запускает их одновременно.

Обратите внимание, что gsutil mv основан на синтаксисе unix mv command, который также не поддерживает функцию, о которой вы просите.

+0

Да, я уже думал об этом. Однако существует ли ограничение одновременных команд, которые могут быть выполнены одновременно? – toom

+0

Применимы только обычные ограничения операционной системы; сам инструмент может выполняться любое количество раз одновременно. –

+0

Хорошо, я написал небольшой скрипт, который перемещает 100 файлов параллельно. В результате было перемещено всего 25 файлов, и весь процесс занял 10 минут. Определенно не решение. – toom

Смежные вопросы