5

Tengo un rol de trabajador que utilizo para extraer datos de Blob Storage OnStart. Actualmente estoy probando esto cargando un archivo test.txt y luego descargándolo a un directorio local. Esto está funcionando bien.¿Cómo subir una carpeta a Blob Storage?

Ahora me gustaría cargar una carpeta para blob de almacenamiento. Esta carpeta contiene un script por lotes, así como varios ejecutables que llama el script por lotes.

¿Cuál es la manera recomendada de lograr esto? Creo que comprimir la carpeta y cargar el archivo * .zip sería fácil ... pero luego, una vez que la descargué de manera local para que la desempeñe la función de trabajador, ¿cómo la descomprimiría sin necesidad de bibliotecas de terceros?

Si hay mejores opciones, estoy abierto a cualquier sugerencia. Gracias por la ayuda aquí. Esta comunidad me ha ayudado mucho a medida que aumente :)

+0

¿Por qué no simplemente cargar los archivos individuales? El almacenamiento es barato. – Paparazzi

+0

Debería haber notado que también hay una carpeta de proyecto que contiene cientos de archivos y otras carpetas. Me gustaría poder descargar todo el contenido del contenedor sin perder carpetas, nombres de archivos, etc. ¿Es esto posible? – RobVious

+0

Defina datos de extracción. ¿Necesita estos para la función de trabajador o necesita descargar estos archivos al cliente? ¿O algo mas? – Paparazzi

Respuesta

2

Puede tomar dos enfoques: archivo único (por ejemplo, zip) o archivo múltiple (con cada archivo en su propio blob) Aquí está mi opinión sobre ella, a continuación, una nota sobre descomprimir:

postal único archivo

Esta es una manera muy fácil de mantener un conjunto agrupado de archivos, como una instalación de Apache, o un conjunto de recursos estáticos . Descargar al almacenamiento local desde un blob es extremadamente simple. Y, un archivo zip puede manejar cualquier nivel de directorios anidados.

Desventaja: Para actualizar un solo archivo, debe crear un nuevo archivo zip; no hay forma de simplemente cargar un activo modificado.

gotas individuales

manchas separadas son grandes cuando necesita actualizar archivos individuales de forma rápida y sin tener que preocuparse por otros archivos. Además, puede vincular directamente estos blobs, ya sean públicos o (con la Firma de acceso compartido), enlaces privados y encriptados en páginas web, etc. Consulte mi respuesta here, así como @ Sandrino's, para ver ejemplos de esto. Ah, y si estás planeando exponer blobs a través de CDN, deberán estar en blobs individuales.

Desventaja: Sin asignación absoluta a los directorios anidados. El almacenamiento de blobs está organizado por la cuenta \ contenedor \ blob. Mientras que puede simular carpetas anidadas, necesitaría trabajar para mapear archivos individuales. Para descargar blobs individuales, debe tomar el contenedor y llamar al ListBlobs() para enumerar nombres de blobs individuales.

Cómo descomprimir

proyecto El Eclipse proporciona un script vbs que es trivial de usar. Desde un proyecto de Visual Studio (o realmente cualquier script), consideraría descargar algo como 7zip, que es gratis y de fácil instalación. A continuación, simplemente descargue el archivo comprimido desde el almacenamiento de blob al almacenamiento local (en la carpeta adecuada) y páselo a 7zip.

Espero que esto le proporcione suficiente orientación para tomar la decisión correcta. Si fuera me y estuviera almacenando una compilación (como tomcat), mantendría toda la estructura del directorio en un zip. Eso me da la seguridad de que no he roto algo al modificar solo un archivo. Y ... puedo mantener un historial de ejecución de las versiones de tomcat fácilmente, con varias cremalleras (en blobs separados).

+0

Muy bueno. Creo que intentaré comprimir todo entonces. Esto significa que necesitaré tres archivos en el contenedor: el archivo de compilación, el ejecutable 7zip y un script por lotes que le dice a la función de trabajador que instale 7zip, descomprima la compilación y luego ejecute la implementación. ¿Eso suena bien? Saludos :) – RobVious

+0

Suena bien. 7zip no necesariamente tiene que ir en el mismo contenedor. Tenga tantos contenedores como desee. La secuencia de comandos por lotes debe ser parte de su implementación de Windows Azure. Dado que 7zip proporciona un MSI, se puede ejecutar desde un script de inicio. De todas formas, deberá descargar 7zip en el almacenamiento local para instalarlo. Fácil de hacer con un blob público, o descárgalo directamente de sourceforge. Si está en blob privado, necesitaría una forma de acceder a las claves, o tener firma de acceso compartido al blob o al contenedor. Por ahora, comenzaría simple e iría con blob público para almacenar 7zip msi. –

1

Con el lanzamiento de la herramienta AZCOPY puede hacerlo en una línea. Detalles here.

Cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" 

.\AzCopy /Source:C:\Users\folderName\ ` 
/Dest:https://storageAccountName.blob.core.windows.net/storageContainerName ` 
/DestKey:yourStorageAccountKey /S 
Cuestiones relacionadas