У меня есть ведро/папка, в которую каждую минуту поступает много файлов. Как я могу читать только новые файлы на основе метки времени файла.
например: список всех файлов с меткой времени> my_timestamp
У меня есть ведро/папка, в которую каждую минуту поступает много файлов. Как я могу читать только новые файлы на основе метки времени файла.
например: список всех файлов с меткой времени> my_timestamp
Это не функция, предоставляемая gsutil или API GCS, так как нет возможности перечислить объекты по отметке времени.
Вместо этого вы можете подписаться на новые объекты с помощью функции GCS Cloud Pub/Sub. .
Вы можете использовать немного баш-фу:
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
gsutil
к своему ответу, чтобы люди поняли.
- person Jujhar Singh; 29.01.2018
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
Если вас интересуют новые файлы или, другими словами, файлы, которых нет в целевом сегменте, то в качестве альтернативы вы можете использовать параметр gsutil -n, так как он копирует только те файлы, которых нет в целевом сегменте.
Из документации https://cloud.google.com/storage/docs/gsutil/commands/cp?hl=ru
Не затирать. Если указано, существующие файлы или объекты в месте назначения не будут перезаписаны. Любые элементы, пропущенные этой опцией, будут отмечены как пропущенные. Эта опция выполнит дополнительный запрос GET, чтобы проверить, существует ли элемент, прежде чем пытаться загрузить данные. Это сократит повторную передачу данных, но дополнительные HTTP-запросы могут сделать передачу небольших объектов медленнее и дороже.
Минусы этого подхода в том, что он делает запрос проверки для каждого файла, присутствующего в вашей корзине с исходным кодом.