2012-05-03 40 views

Odpowiedz

0

Jeden liner pomocą Azure CLI 2.0:

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

Zastępca <storage_account_name> i <container_name> przez odpowiednie wartości w Twoim przypadku.

Można zobaczyć pomoc do commnand uruchamiając:

az storage blob delete-batch -h 
4

Jeśli chcesz usunąć kontener. Chciałbym zasugerować, aby sprawdzić http://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx, aby zobaczyć, czy operacja usuwania kontenera (pojemnik i wszystkie znajdujące się w nim bąble są później usuwane podczas usuwania śmieci) może spełnić to wymaganie.

+0

Problem z tym podejściem polega na tym, że Webrole ulegnie awarii, jeśli kontener nie zostanie znaleziony, zanim utworzy nowy o tej samej nazwie. –

+0

W takim przypadku jedyną opcją jest wyświetlenie wszystkich elementów w kontenerze i usunięcie ich pojedynczo. – knightpfhor

+0

@knightpfhor to właśnie robię z Azure Storage Explorer (od Neudesic). Ale pomimo tego, że mogę wybrać grupę do usunięcia razem, jest to powolne. –

20

Istnieje tylko jeden sposób zbiorczego usuwania obiektów typu blob i polega to na usuwaniu całego kontenera. Jak już powiedziałeś, istnieje opóźnienie między usunięciem kontenera a ponownym użyciem tej nazwy kontenera.

Twoim jedynym wyjściem jest usunięcie jednego na raz. Jeśli możesz wykonać usuwanie z tego samego centrum danych, w którym przechowywane są obiekty blob, będzie to szybsze niż usuwanie lokalnie. Prawdopodobnie oznacza to pisanie kodu (lub możesz RDP w jednej ze swoich instancji i zainstalować eksploratora chmur). Jeśli piszesz kod, możesz przyspieszyć cały proces, usuwając elementy równolegle. Coś podobnego do tego mogłoby zadziałać:

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

działa bardzo ładnie - dzięki! Jedną z poprawek byłoby zwrócenie plików jako listy płaskiej w przypadku użycia folderów: 'Parallel.ForEach (blobContainer.ListBlobs (useFlatBlobListing: true), x => ((CloudBlob) x) .Delete());' – Eleasar

+0

Tak, masz rację, to z pewnością bezpieczniejsza opcja. – knightpfhor

1

W tym przypadku lepszym rozwiązaniem jest zidentyfikowanie listy przedmiotów znalezionych w pojemniku. następnie usuń każdy element z pojemnika. To najlepsza opcja. Jeśli usuniesz pojemnik trzeba mieć błąd czasu bieg na następny raz ...

10

Najprostszym sposobem, aby to zrobić w 2016 roku, jest korzystanie z Microsoft Azure Storage Explorer IMO.

  1. Pobierz Azure Storage Explorer i zainstalować go
  2. Zaloguj się z odpowiednim kontem Microsoft
  3. Przejdź do pojemnika, który chcesz opróżnić
  4. Kliknij przycisk Zaznacz wszystko
  5. kliknij na Delete przycisk

Screenshot

+0

W tym przypadku bardzo ważna jest sytuacja - musisz trafić więcej, aż dotrzesz do ostatniej strony obiektów typu blob, a następnie wybierz opcję zaznacz wszystko. A następnie usuń. –

+1

@RobertoBonini dodał kroki. O tym, co pamiętam, nie będę musiał ładować do końca. – gldraphael

+0

Wybierz wszystko, co można zrobić dla "wszystko na stronie" i "wszystko w pamięci podręcznej", nie ma potrzeby ładowania wszystkich stron. Świetne narzędzie btw, dzięki za udostępnienie tej informacji. –

3

Jeśli jesteś zainteresowany w sposób CLI, to następujący fragment kodu będzie ci pomóc:

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 

Najpierw pobiera listę bąble w pojemniku i usuwa je jeden po drugim.

3

Jeśli używasz klastra iskier (HDInsight), który ma dostęp do tego konta magazynu, możesz użyć poleceń HDFS w wierszu poleceń;

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

Prawdziwą korzyścią jest to, że klaster jest mało prawdopodobne, aby przejść w dół, a jeśli masz ekran działa na niego, to nie straci swoją sesję podczas gdy usuniesz z dala.

Powiązane problemy