2012-05-03 27 views

risposta

0

A uno di linea utilizzando Azure CLI 2.0:

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

sostituto <storage_account_name> e <container_name> dai valori appropriati nel tuo caso.

Si può vedere l'aiuto del commnand eseguendo:

az storage blob delete-batch -h 
4

Se si intende eliminare un contenitore. Vorrei suggerire di controllare http://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx per vedere se l'operazione Elimina contenitore (il contenitore e tutti i BLOB in essa contenuti vengono successivamente eliminati durante la raccolta dei dati inutili) potrebbe soddisfare il requisito.

+0

Il problema con questo approccio è che Webrole si arresterebbe in modo anomalo se il contenitore non viene trovato prima di crearne uno nuovo con lo stesso nome. –

+0

In questo caso, l'unica altra opzione è elencare tutti gli elementi nel contenitore ed eliminarli uno alla volta. – knightpfhor

+0

@knightpfhor è ciò che sto facendo con Azure Storage Explorer (da Neudesic). Ma, nonostante io possa selezionare un gruppo da eliminare insieme, è molto lento. –

20

C'è solo un modo per eliminare i blocchi in modo massiccio e cioè eliminando l'intero contenitore. Come hai detto, c'è un ritardo tra l'eliminazione del contenitore e quando è possibile utilizzare nuovamente il nome del contenitore.

L'unica altra scelta è quella di eliminare uno alla volta. Se è possibile effettuare l'eliminazione dallo stesso centro dati in cui sono memorizzati i BLOB, sarà più veloce rispetto all'esecuzione dell'eliminazione locale. Questo probabilmente significa scrivere codice (oppure puoi farlo in una delle tue istanze e installare Cloud Explorer). Se stai scrivendo il codice, puoi accelerare il processo generale eliminando gli elementi in parallelo. Qualcosa di simile a questo funzionerebbe:

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

funziona molto bene - grazie! Una correzione consisterebbe nel restituire i file come un elenco semplice nel caso in cui siano state utilizzate cartelle: 'Parallel.ForEach (blobContainer.ListBlobs (useFlatBlobListing: true), x => ((CloudBlob) x) .Delete());' – Eleasar

+0

Sì, hai ragione, quella sarebbe sicuramente un'opzione più sicura. – knightpfhor

1

Per questo caso l'opzione migliore è identificare l'elenco di elementi trovati nel contenitore. quindi elimina ogni elemento dal contenitore. Questa è l'opzione migliore. Se si elimina il contenitore si dovrebbe avere un errore di tempo di esecuzione sulla prossima volta ...

10

Il modo più semplice per farlo nel 2016 è l'utilizzo di Microsoft Azure Storage Explorer IMO.

  1. Scarica Azure Storage Explorer e installarlo
  2. l'accesso con l'account Microsoft appropriato
  3. Sfoglia per il contenitore che si desidera svuotare
  4. Fare clic sul pulsante Seleziona tutto
  5. Cliccare sulla Delete pulsante

Screenshot

+0

Il HOW è molto importante qui - devi caricare un carico di più fino a raggiungere l'ultima pagina di blob e quindi premere select all. E poi cancella. –

+1

@RobertoBonini ha aggiunto i passaggi. Di quello che ricordo, non devo continuare a caricare fino alla fine. – gldraphael

+0

Seleziona tutto può essere fatto per "tutto nella pagina" e "tutto in cache", non c'è bisogno di caricare tutte le pagine. Ottimo strumento, grazie per aver condiviso queste informazioni. –

3

Se siete interessati in modo CLI, quindi il seguente pezzo di codice vi aiuterà fuori:

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 

recupera prima l'elenco dei blob nel contenitore ed elimina uno per uno.

3

Se si utilizza un cluster spark (HDInsight) che ha accesso a tale account di archiviazione, è possibile utilizzare i comandi HDFS sulla riga di comando;

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

Il vero vantaggio è che il cluster è improbabile che andare verso il basso, e se si dispone di schermo in esecuzione su di esso, quindi non perderà la sessione mentre si elimina via.

Problemi correlati