gsutil rsync только файлы, соответствующие шаблону - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно ежедневно пересылать файлы из корзины на локальную машину, и корзина содержит 20 тыс. Файлов.Мне нужно загрузить только измененные файлы, которые заканчиваются * some_naming_convention.csv.Какой лучший способ сделать это?использование подстановочного знака в источнике загрузки дало мне ошибку.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Я не думаю, что вы можете сделать это с Rsynch. Как сказал вам Кристофер, вы можете пропускать файлы, используя флаг "-x", но не просто синхронизировать эти [1] . Я создал общедоступный запрос функций от вашего имени [2] , чтобы вы могли следить за обновлениями там.

Как я говорю в FR, ИМХО я считаю, что это не следует цели rsynch, поскольку она заключается в том, чтобы синхронизировать папки / корзины, и просто синхронизация некоторых из них не подходит для этой цели.

Существует возможный «обходной путь» с использованием gsutil cp для копирования файлов и -n для пропуска уже существующих. Вся команда для вашего случая должна быть:

gsutil -m cp -n <bucket>/*some_naming_convention.csv <directory>

Другой вариант, возможно, немного более надуманный - скопировать / переместить эти файлы в папку, а затем использовать эту папку для rsynch.

Я надеюсь, что это работает для вас;)

0 голосов
/ 19 сентября 2018

Rsync позволяет включать и исключать файлы, соответствующие шаблонам.

Для каждого файла rsync применяет первый соответствующий патч, некоторые, если вы хотите синхронизировать только выбранные файлы, вам нужно включить их, а затем исключить всеelse.

Добавьте следующее к вашим опциям rsync:

--include='*some_naming_convention.csv' --exclude='*'

Этого достаточно, если все ваши файлы находятся в одном каталоге.Если вы также хотите искать в подпапках, вам нужно немного больше:

--include='*/' --include='*some_naming_convention.csv' --exclude='*'

Это дублирует все дерево каталогов, но копирует только те файлы, которые вы хотите.Если это оставляет пустые каталоги, которые вам не нужны, тогда добавьте --prune-empty-dirs.

...