Быстрый способ удалить большую папку в GCS Bucket - PullRequest
0 голосов
/ 29 января 2020

У меня очень большая корзина GCS (несколько ТБ), с несколькими подкаталогами, каждый из которых содержит пару терабайт данных.

Я хочу удалить некоторые из этих папок.

I пытался использовать gsutil из Cloud Shell, но это занимает много времени.

Для справки, вот команда, которую я использую:

gsutil -m rm -r "gs://BUCKET_NAME/FOLDER"

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

До сих пор моим последним средством было ждать, пока папки, которые я хочу delete - «старые», и соответственно установите правило жизненного цикла, но это может занять слишком много времени.

Есть ли другие способы сделать это быстрее?

1 Ответ

1 голос
/ 29 января 2020

Это займет много времени; Вы должны выполнить запрос DELETE для каждого объекта с префиксом FOLDER/.

. В GCS отсутствует понятие «папки». Имена объектов могут иметь общий префикс, но все они находятся в плоском пространстве имен. Например, если у вас есть эти три объекта:

  • / a / b / c / 1.txt
  • / a / b / c / 2.txt
  • / a / b / c / 3.txt

... тогда у вас фактически нет папок с именами a, b или c. После того как вы удалили эти три объекта, «папки» (то есть префикс, которым они поделились) больше не будут отображаться, когда вы перечислили объекты в своем ведре.

Подробнее см. В документах:

https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork

...