2012-05-03 4 views
17

Я просто хочу очистить (свалка, zap, del .) контейнер Azure Blob. Как я могу это сделать?Как очистить контейнер для контейнеров с лазурным покрытием?

Примечание: Контейнер используется журналами IIS (работает Webrole) (wad-iis-logfiles).

+0

Ответ на этот вопрос [здесь] (https://stackoverflow.com/questions/10426213/how-to-clean-an-azure -Хранение-блоб-контейнер). – joanlofe

ответ

0

Один лайнер с помощью Azure CLI 2.0:

az storage blob delete-batch --account-name <storage_account_name> --source <container_name> 

Заменитель <storage_account_name> и <container_name> соответствующими значениями в вашем случае.

Вы можете увидеть в помощи commnand, запустив:

az storage blob delete-batch -h 
4

Если вы хотите удалить контейнер. Я хотел бы предложить вам проверить http://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx, чтобы увидеть, будет ли операция «Удалить контейнер» (контейнер и любые складки, содержащиеся в нем, позже удалены во время сбора мусора) могут выполнить это требование.

+0

Проблема с этим подходом заключается в том, что Webrole сработает, если контейнер не будет найден до создания нового с тем же именем. –

+0

В этом случае ваш единственный вариант - перечислить все элементы в контейнере и удалить их по одному. – knightpfhor

+0

@knightpfhor вот что я делаю с Azure Storage Explorer (от Neudesic). Но, несмотря на то, что я могу выбрать группу для удаления вместе, она виртуозно замедляется. –

20

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

Ваш единственный выбор - удалить один за раз. Если вы можете сделать удаление из того же центра обработки данных, где хранятся капли, это будет быстрее, чем запуск локального удаления. Это, вероятно, означает написание кода (или вы могли бы RDP в один из ваших экземпляров и установить облачный проводник). Если вы пишете код, вы можете ускорить общий процесс, удалив элементы параллельно. Нечто похожее на это будет работать:

Parallel.ForEach(myCloudBlobClient.GetContainerReference(myContainerName).ListBlobs(), x => ((CloudBlob) x).Delete()); 
+2

работает очень приятно - спасибо! Одна из исправлений заключалась бы в том, чтобы возвращать файлы в виде плоского списка в случае использования папок: 'Parallel.ForEach (blobContainer.ListBlobs (useFlatBlobListing: true), x => ((CloudBlob) x) .Delete());' – Eleasar

+0

Да, вы правы, это, безусловно, было бы более безопасным вариантом. – knightpfhor

1

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

6

Попробуйте использовать морошка продукт для Windows Azure

это ссылка: http://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx

вы можете найти в сгустка для конкретного расширения. выберите несколько блоков и удалите их

+1

Бесплатный инструмент отлично работает для этого - очень полезно - спасибо –

1

Вы можете использовать Cloud Combine, чтобы удалить все капли в вашем контейнере Azure.

10

Самый простой способ сделать это в 2016 году - это использовать Microsoft Azure Storage Explorer IMO.

  1. Скачать Azure Storage Explorer, и установить его
  2. Вход с использованием соответствующего счета Microsoft
  3. Просмотр в контейнер вы хотите очистить
  4. Нажмите на кнопку Выбрать все
  5. Нажмите на Delete кнопка

Screenshot

+0

Здесь очень важно: вам нужно больше нажимать больше, пока вы не достигнете последней страницы капли, а затем нажмите выбрать все. А потом удалите. –

+1

@ RobertoBonini добавил шаги. Из того, что я помню, я не должен до конца загружаться. – gldraphael

+0

Выделить все можно для «все на странице» и «все кэшированные», не нужно загружать все страницы. Отличный инструмент btw, спасибо за обмен этой информацией. –

3

Если вы заинтересованы в CLI пути, то следующий фрагмент кода поможет вам:

for i in `az storage blob list -c "Container-name" --account-name "Storage-account-name" --account-key "Storage-account-access-key" --output table | awk {'print $1'} | sed '1,2d' | sed '/^$/d'`; do az storage blob delete --name $i -c "Container-name" --account-name "Storage-account-name" --account-key "Storage-account-access-key" --output table; done 

Это первый получает список сгустков в контейнере и удаляет их по одному.

3

Если вы используете кластер искры (HDInsight), который имеет доступ к этой учетной записи, то вы можете использовать команды HDFS в командной строке;

hdfs dfs -rm -r wasbs://[email protected]_name.blob.core.windows.net/path_goes_here

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