Pregunta sobre blobstore, azure, azure-storage-blobs – ¿Cómo limpiar un contenedor de Blob de almacenamiento de Azure?

26

Solo quiero limpiar (dump, zap, del.) un contenedor de Azure Blob. ¿Cómo puedo hacer eso?

Nota: El contenedor es utilizado por los registros de IIS (que ejecutan Webrole) (wad-iis-logfiles).

Tu respuesta

9   la respuesta
2

Combinación de nubes para eliminar todas las manchas en su contenedor de Azure.

Gracias, realmente funciona. Pawan Agrawal
6

Trate de usar el producto cloudberry para Windows Azure

Este es el enlace:http://www.cloudberrylab.com/free-microsoft-azure-explorer.aspx

Puedes buscar en el blob una extensión específica. Seleccione múltiples manchas y elimínelas

La herramienta gratuita funciona perfectamente para esto - muy útil - gracias Dave Rael
13

Actualizar: La forma más sencilla de hacerlo ahora (en 2018) es usar el CLI de Azure. Comprobarla respuesta de joanlofe :)

La forma más fácil de hacerlo en 2016 es usar Microsoft.Explorador de almacenamiento de Azure OMI.

Descarga Azure Storage Explorer e instálaloInicie sesión con la cuenta de Microsoft correspondienteNavega hasta el contenedor que quieras vaciar.Haga clic en el botón Seleccionar todoHaga clic en el botón Eliminar

@RobertoBonini agregó los pasos. De lo que recuerdo no tengo que seguir cargando hasta el final. gldraphael
@pcdev usa la CLI :) Actualizaré mi respuesta para agregar un enlace a la respuesta de joanlofe. gldraphael
Sí, esa es la respuesta obvia, sin embargo, sería bueno poder abrir una GUI para hacer una tarea como esta que probablemente solo haga una vez cada 18-24 meses en lugar de tener que buscar la respuesta cada vez que :) pcdev
@absmiths estuvo de acuerdo. Hojeé 20 páginas de 1000 registros (solo seguí golpeando las páginas 10, 20, 30, etc.), y eventualmente puse 20k registros en el caché, que parecía cargarse muy bien. Luego presioné "Seleccionar todo> Almacenado en caché", pero tan pronto como hice clic en Eliminar, mi computadora portátil (Core i5 con 8GB de RAM) quedó bloqueada por varios minutos hasta que ASE finalmente falló. Repitió el proceso con el mismo resultado. No he visto un programa que fallase tan duro desde Win7 días o antes ... pcdev
10

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

Sustituir<storage_account_name> y<container_name> Por los valores apropiados en su caso.

Puedes ver la ayuda del comando ejecutando:

<code>az storage blob delete-batch -h
</code>
Funcionó muy bien, después agregué--account-key Ruud Helderman
En caso de que vea este error: "Esta operación no está permitida porque el blob tiene instantáneas. Código de error: SnapshotsPresent", es posible que desee agregar esta opción:--delete-snapshots include Ruud Helderman
3

esa cuenta de almacenamiento, entonces puede usar los comandos HDFS en la línea de comandos;

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

El beneficio real es que es poco probable que el clúster se desactive, y si tiene una pantalla ejecutándose en él, no perderá su sesión mientras elimine.

5

Si te refieres a que quieres eliminar un contenedor. Me gustaría sugerirte que compruebeshttp://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx para ver si la operación Eliminar contenedor (el contenedor y las manchas contenidas en él se eliminan posteriormente durante la recolección de basura) podría cumplir el requisito.

Las respuestas de solo enlace se consideran malas respuestas. Por favor, hazlo o elimina. spender
En ese caso, su única otra opción es listar todos los elementos en el contenedor y eliminarlos de uno en uno. knightpfhor
Nuestra función web no se bloqueará a menos que dejemos una excepción sin manejar. Cuando haga algo con almacenamiento, por favor, póngalo en un bloque try catch. Entonces, si algo sale mal, podemos recuperar nuestra aplicación con elegancia. En este escenario en particular, si el contenedor no existe, puede capturar la excepción y continuar de manera normal. Esto no afectará la lógica de su aplicación, ya que su objetivo es hacer que el contenedor no exista. Ming Xu - MSFT
@knightpfhor eso es lo que estoy haciendo con Azure Storage Explorer (de Neudesic). Pero, a pesar de que puedo seleccionar un grupo para eliminar juntos, es muy lento. Néstor Sánchez A.
El problema con este enfoque es que el Webrole se bloquearía si no se encuentra el contenedor antes de crear uno nuevo con el mismo nombre. Néstor Sánchez A.
23

ando todo el contenedor. Como ha dicho, hay una demora entre la eliminación del contenedor y cuándo puede usar ese nombre de nuevo.

Su única otra opción es eliminar una a la vez. Si puede realizar la eliminación desde el mismo centro de datos donde se almacenan las manchas, será más rápido que ejecutar la eliminación localmente. Probablemente, esto signifique escribir código (o podría RDP en una de sus instancias e instalar Cloud Explorer). Si está escribiendo un código, puede acelerar el proceso general eliminando los elementos en paralelo. Algo similar a esto funcionaría:

<code>Parallel.ForEach(myCloudBlobClient.GetContainerReference(myContainerName).ListBlobs(), x => ((CloudBlob) x).Delete());
</code>
Sí, tienes razón, ciertamente sería una opción más segura. knightpfhor
Funciona muy bien - gracias! Una corrección sería devolver los archivos como una lista plana en caso de que se usaran carpetas:Parallel.ForEach(blobContainer.ListBlobs(useFlatBlobListing: true), x => ((CloudBlob)x).Delete()); Eleasar
1

Para este caso, la mejor opción es identificar la lista de elementos que se encuentra en el contenedor. A continuación, elimine cada elemento del contenedor. Esa es la mejor opción. Si elimina el contenedor, debería tener un error de tiempo de ejecución la próxima vez ...

4

el siguiente fragmento de código lo ayudará:

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

Primero obtiene la lista de manchas en el contenedor y las elimina una por una.

Preguntas relacionadas