Pytanie w sprawie blobstore, azure-storage-blobs, azure – Jak wyczyścić kontener Blob magazynu Azure?

26

Chcę tylko wyczyścić (dump, zap, del.) kontener Azure Blob. Jak mogę to zrobić?

Uwaga: Kontener jest używany przez dzienniki IIS (z uruchomionym Webrole) (pliki zwis-log).

Twoja odpowiedź

9   odpowiedzi
13

Aktualizacja: Łatwiejszym sposobem zrobienia tego teraz (w 2018 r.) Jest użycie interfejsu Azure CLI. Czekodpowiedź joanlofe :)

Najłatwiejszym sposobem na zrobienie tego w 2016 jest użycie MicrosoftAzure Storage Explorer IMO.

Pobierz Eksplorator magazynu Azure i zainstaluj goZaloguj się za pomocą odpowiedniego konta MicrosoftPrzejdź do kontenera, który chcesz opróżnićKliknij przycisk Wybierz wszystkoKliknij przycisk Usuń

Tak, to oczywista odpowiedź, jednak byłoby miło móc otworzyć GUI, aby wykonać takie zadanie, że prawdopodobnie robię to tylko raz na 18-24 miesiące, zamiast za każdym razem szukać odpowiedzi :) pcdev
@RobertoBonini dodał kroki. Z tego co pamiętam nie musiałem ładować do końca. gldraphael
@smiths zgodził się. Odczytałem 20 stron z 1000 rekordów (po prostu uderzaj w strony 10, 20, 30 itd.), Ostatecznie umieszczając 20k rekordów w pamięci podręcznej, które wydawały się ładować. Następnie nacisnąłem „Select All> Cached”, ale jak tylko kliknąłem „Delete”, całkowicie zablokowałem mój laptop (Core i5 w / 8 GB RAM) przez kilka minut, aż w końcu ASE uległo awarii. Powtórz proces z tym samym wynikiem. Nie widziałem awarii programu tak mocno od Win7 dni lub wcześniej ... pcdev
@pcdev używa CLI :) Zaktualizuję moją odpowiedź, aby dodać link do odpowiedzi joanlofe. gldraphael
1

W tym przypadku lepszą opcją jest zidentyfikowanie listy przedmiotów znalezionych w kontenerze. następnie usuń każdy element z kontenera. To najlepsza opcja. Jeśli usuniesz kontener, powinieneś mieć błąd czasu wykonania następnego razu ...

6

Spróbuj użyć produktu cloudberry dla Windows Azure

to jest link:http://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx

możesz przeszukiwać blob pod kątem określonego rozszerzenia. wybierz wiele obiektów typu blob i usuń je

Darmowe narzędzie doskonale do tego działa - bardzo przydatne - dzięki Dave Rael
2

Możesz użyćKombinacja chmur usunąć wszystkie obiekty blob w kontenerze Azure.

Dzięki, to naprawdę działa. Pawan Agrawal
10

Jeden liner używający interfejsu Azure CLI 2.0:

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

Zastąpić<storage_account_name> i<container_name> przez odpowiednie wartości w twoim przypadku.

Pomoc polecenia można zobaczyć, uruchamiając:

<code>az storage blob delete-batch -h
</code>
Pracowałem świetnie po dodaniu--account-key Ruud Helderman
Jeśli zobaczysz ten błąd: „Ta operacja nie jest dozwolona, ​​ponieważ obiekt blob ma migawki. Kod błędu: SnapshotsPresent”, możesz dodać tę opcję:--delete-snapshots include Ruud Helderman
3

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

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

Prawdziwą korzyścią jest to, że klaster prawdopodobnie nie zejdzie, a jeśli masz na nim ekran, nie stracisz sesji podczas usuwania.

23

Istnieje tylko jeden sposób masowego usuwania obiektów typu blob, a mianowicie usuwanie całego kontenera. Jak powiedziałeś, istnieje opóźnienie między usunięciem kontenera a ponownym użyciem tej nazwy kontenera.

Jedynym innym wyborem jest usuwanie pojedynczo. Jeśli możesz usunąć dane z tego samego centrum danych, w którym przechowywane są obiekty blob, będzie to szybsze niż lokalne uruchomienie usuwania. Prawdopodobnie oznacza to pisanie kodu (lub możesz umieścić RDP w jednej z twoich instancji i zainstalować eksplorator chmur). Jeśli piszesz kod, możesz przyspieszyć cały proces, usuwając elementy równolegle. Coś podobnego do tego zadziałałoby:

<code>Parallel.ForEach(myCloudBlobClient.GetContainerReference(myContainerName).ListBlobs(), x => ((CloudBlob) x).Delete());
</code>
działa bardzo miło - dzięki! Jedną z poprawek byłoby zwrócenie plików jako płaskiej listy w folderach przypadków, w których zastosowano:Parallel.ForEach(blobContainer.ListBlobs(useFlatBlobListing: true), x => ((CloudBlob)x).Delete()); Eleasar
Tak, masz rację, to z pewnością byłaby bezpieczniejsza opcja. knightpfhor
4

Jeśli interesuje Cię sposób CLI, następujący fragment kodu pomoże ci:

<code>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
</code>

Najpierw pobiera listę obiektów typu blob w kontenerze i usuwa je jeden po drugim.

5

Jeśli chcesz usunąć kontener. Chciałbym zaproponować ci sprawdzeniehttp://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx aby sprawdzić, czy operacja Usuń kontener (kontener i wszystkie zawarte w nim bloby zostaną później usunięte podczas usuwania śmieci) może spełnić to wymaganie.

@knightpfhor to, co robię z Azure Storage Explorer (z Neudesic). Ale mimo że mogę wybrać grupę do usunięcia razem, jest to bardzo powolne. Néstor Sánchez A.
Nasza rola internetowa nie ulegnie awarii, chyba że zostawimy wyjątek nieobsługiwany. Robiąc cokolwiek z pamięcią, umieść go w bloku try catch. Następnie, jeśli coś pójdzie nie tak, możemy elegancko odzyskać naszą aplikację. W tym konkretnym scenariuszu, jeśli kontener nie istnieje, możesz złapać wyjątek i kontynuować normalnie. Nie wpłynie to na logikę aplikacji, ponieważ Twoim celem jest, aby kontener nie istniał. Ming Xu - MSFT
Problem z tym podejściem polega na tym, że Webrole ulegnie awarii, jeśli kontener nie zostanie znaleziony przed utworzeniem nowego kontenera o tej samej nazwie. Néstor Sánchez A.
Odpowiedzi tylko na link są uważane za złe odpowiedzi. Proszę to uzupełnić lub usunąć. spender
W takim przypadku jedyną inną opcją jest wyświetlenie wszystkich elementów w kontenerze i usunięcie ich pojedynczo. knightpfhor

Powiązane pytania