Google Cloud Storage: как получить список новых файлов в корзине/папке с помощью gsutil

У меня есть ведро/папка, в которую каждую минуту поступает много файлов. Как я могу читать только новые файлы на основе метки времени файла.

например: список всех файлов с меткой времени> my_timestamp


person Remis Haroon - رامز    schedule 17.05.2017    source источник


Ответы (3)


Это не функция, предоставляемая gsutil или API GCS, так как нет возможности перечислить объекты по отметке времени.

Вместо этого вы можете подписаться на новые объекты с помощью функции GCS Cloud Pub/Sub. .

person jterrace    schedule 17.05.2017
comment
+1. См. этот вопрос для примера того, как настроить это с помощью gsutil: stackoverflow.com/questions/43074834/ - person mhouglum; 18.05.2017

Вы можете использовать немного баш-фу:

gsutil ls -l gs://<your-bucket-name> | sort -k2n | tail -n1 | awk 'END {$1=$2=""; sub(/^[ \t]+/, ""); print }'

разбивая это:

# grab detailed list of objects in bucket
gsutil ls -l gs://your-bucket-name 

# sort by number on the date field
sort -k2n

# grab the last row returned 
tail -n1

# delete first two cols (size and date) and ltrim to remove whitespace
awk 'END {$1=$2=""; sub(/^[ \t]+/, ""); print }'`

Протестировано с Google Cloud SDK v186.0.0, gsutil v4.28

person Jujhar Singh    schedule 17.01.2018
comment
это решение очень хрупкое, так как оно легко сломается, если Google решит немного изменить формат - person Remis Haroon - رامز; 26.01.2018
comment
@remisharoon Вы никогда не просили супернадежность в своем первоначальном вопросе. Я добавлю номер версии gsutil к своему ответу, чтобы люди поняли. - person Jujhar Singh; 29.01.2018
comment
Обновление, которое работает для меня в более новых версиях Google CloudSDK 190.0.1 и gsutil 4.28: gsutil ls -l gs://your-bucket-name | sort -k2 | tail -n2 | head -n1 | awk 'END {$1=$2=""; sub(/^[ \t]+/, ""); print }' - person wearego; 01.08.2019
comment
отлично .. этот обновленный работает для меня - person vikrant rana; 29.06.2021
comment
можно ли выбрать порядок asc или dsc при выводе результатов сортировки - person vikrant rana; 29.06.2021

Если вас интересуют новые файлы или, другими словами, файлы, которых нет в целевом сегменте, то в качестве альтернативы вы можете использовать параметр gsutil -n, так как он копирует только те файлы, которых нет в целевом сегменте.

Из документации https://cloud.google.com/storage/docs/gsutil/commands/cp?hl=ru

Не затирать. Если указано, существующие файлы или объекты в месте назначения не будут перезаписаны. Любые элементы, пропущенные этой опцией, будут отмечены как пропущенные. Эта опция выполнит дополнительный запрос GET, чтобы проверить, существует ли элемент, прежде чем пытаться загрузить данные. Это сократит повторную передачу данных, но дополнительные HTTP-запросы могут сделать передачу небольших объектов медленнее и дороже.

Минусы этого подхода в том, что он делает запрос проверки для каждого файла, присутствующего в вашей корзине с исходным кодом.

person Neeraj    schedule 21.07.2019