Вопрос по – Как очистить контейнер BLOB-хранилища Azure?

26

Я просто хочу убрать (свалка, зап, дель.) контейнер BLOB-объектов Azure. Как я могу это сделать?

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

Ваш Ответ

9   ответов
4

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

Сначала он выбирает список больших двоичных объектов в контейнере и удаляет их один за другим.

1

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

2

Облачный комбинат удалить все BLOB-объекты в вашем контейнере Azure.

Спасибо, это действительно работает.
5

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

@knightpfhor - это то, что я делаю с помощью Azure Storage Explorer (из Neudesic). Но, несмотря на то, что я могу выбрать группу для удаления вместе, это очень медленно. Néstor Sánchez A.
Ответы, содержащие только ссылки, считаются плохими. Пожалуйста, уточните это или удалите.
Проблема с этим подходом заключается в том, что веб-ролик будет аварийно завершать работу, если контейнер не будет найден до создания нового с тем же именем. Néstor Sánchez A.
Наша веб-роль не потерпит крах, если мы не оставим исключение необработанным. Когда вы что-то делаете с хранилищем, пожалуйста, поместите его в блок try catch. Затем, если что-то пойдет не так, мы можем элегантно восстановить наше приложение. В этом конкретном сценарии, если контейнер не существует, вы можете перехватить исключение и продолжить работу в обычном режиме. Это не повлияет на логику вашего приложения, поскольку ваша цель - сделать контейнер не существующим.
В этом случае единственный вариант - перечислить все элементы в контейнере и удалить их по одному.
3

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

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

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

10

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

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

Вы можете увидеть помощь команды, выполнив:

az storage blob delete-batch -h
В случае, если вы видите эту ошибку: & quot; Эта операция недопустима, потому что большой двоичный объект имеет моментальные снимки. ErrorCode: SnapshotsPresent & quot ;, вы можете добавить эту опцию:--delete-snapshots include
Работал отлично, после того как я добавил--account-key
23

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

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

Parallel.ForEach(myCloudBlobClient.GetContainerReference(myContainerName).ListBlobs(), x => ((CloudBlob) x).Delete());
работает очень хорошо - спасибо! Одним из исправлений было бы возвращение файлов в виде плоского списка в случае использования папок:Parallel.ForEach(blobContainer.ListBlobs(useFlatBlobListing: true), x => ((CloudBlob)x).Delete());
Да, вы правы, это, безусловно, будет более безопасным вариантом.
13

Update: Более простой способ сделать это сейчас (в 2018 году) - использовать интерфейс командной строки Azure. Проверьтеответ Жоанлофе :)

Самый простой способ сделать это в 2016 году - использовать MicrosoftAzure Storage Explorer ИМО.

Download Azure Storage Explorer and install it Sign in with the appropriate Microsoft Account Browse to the container you want to empty Click on the Select All button Click on the Delete button

Screenshot

Выбрать все можно для & quot; все на странице & quot; и & quot; все кэшированные & quot ;, нет необходимости загружать все страницы. Отличный инструмент, спасибо, что поделились этой информацией.
@absmiths согласился. Я пролистал 20 страниц из 1000 записей (просто продолжайте нажимать страницы 10, 20, 30 и т. Д.), В конечном итоге поместив в кэш 20 тыс. Записей, которые, казалось, загружались очень хорошо. Затем я нажимаю & quot; Выбрать все & gt; Кэшировано & quot ;, но как только я нажал «Удалить», он полностью заблокировал мой ноутбук (Core i5 с 8 ГБ ОЗУ) на несколько минут, пока в конечном итоге не произошел сбой ASE. Повторил процесс с тем же результатом. Давно не видел сбой программы с Win7 дней или раньше ...
КАК очень важно здесь - вы должны нажимать больше, пока не дойдете до самой последней страницы больших объектов, а затем нажать «Выбрать все». А потом удали.
@RobertoBonini добавил шаги. Из того, что я помню, я не могу продолжать загружаться до конца.
Azure Storage Explorer - это круто, но удаление файлов идет очень медленно. Попробуйте очистить контейнер с файлами размером более 100 Кб - это займет вечность.
6

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

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

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

Похожие вопросы