Voglio solo pulire (dump, zap, del .) un contenitore BLOB di Azure. Come lo posso fare?Come pulire un contenitore BLOB di archiviazione di Azure?
Nota: il contenitore viene utilizzato dai registri IIS (eseguendo Webrole) (wad-iis-logfiles).
Voglio solo pulire (dump, zap, del .) un contenitore BLOB di Azure. Come lo posso fare?Come pulire un contenitore BLOB di archiviazione di Azure?
Nota: il contenitore viene utilizzato dai registri IIS (eseguendo Webrole) (wad-iis-logfiles).
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
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.
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. –
In questo caso, l'unica altra opzione è elencare tutti gli elementi nel contenitore ed eliminarli uno alla volta. – knightpfhor
@knightpfhor è ciò che sto facendo con Azure Storage Explorer (da Neudesic). Ma, nonostante io possa selezionare un gruppo da eliminare insieme, è molto lento. –
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());
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
Sì, hai ragione, quella sarebbe sicuramente un'opzione più sicura. – knightpfhor
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 ...
Provare a utilizzare prodotti cloudberry per Windows Azure
questo è il link: http://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx
è possibile cercare nel blob per estensione specifica. selezionare più BLOB ed eliminarli
Lo strumento gratuito funziona perfettamente per questo - molto utile - grazie –
È possibile utilizzare Cloud Combine per eliminare tutti i BLOB nel contenitore di Azure.
Il modo più semplice per farlo nel 2016 è l'utilizzo di Microsoft Azure Storage Explorer IMO.
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. –
@RobertoBonini ha aggiunto i passaggi. Di quello che ricordo, non devo continuare a caricare fino alla fine. – gldraphael
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. –
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.
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.
A questa domanda risponde [qui] (https://stackoverflow.com/questions/10426213/how-to-clean-an-azure -Storage-blob-contenitore). – joanlofe