5

Ho un ruolo di lavoro che utilizzo per estrarre i dati da Blob Storage OnStart. Attualmente sto testando questo caricando un file test.txt e poi scaricandolo in una directory locale. Funziona beneCome caricare una cartella in Blob Storage?

Ora desidero caricare una cartella nella memoria BLOB. Questa cartella contiene uno script batch e diversi eseguibili richiamati dallo script batch.

Qual è il modo consigliato per eseguire questa operazione? Penso che zippare la cartella e caricare il file * .zip sia facile ... ma poi, una volta scaricato localmente per il ruolo del lavoratore da gestire, come dovrei decomprimerlo senza alcuna libreria di terze parti?

Se ci sono opzioni migliori, sono aperto a qualsiasi suggerimento. Grazie per l'aiuto qui - questa community è stata di grande aiuto per me mentre salivo :)

+0

Perché non caricare solo i singoli file? Lo stoccaggio è economico. – Paparazzi

+0

Avrei dovuto notare che esiste anche una cartella di progetto che contiene centinaia di file e altre cartelle. Mi piacerebbe poter scaricare tutti i contenuti del contenitore conservando cartelle, nomi di file, ecc. È possibile? – RobVious

+0

Si prega di definire i dati pull in basso. Hai bisogno di questi per il ruolo di lavoratore o hai bisogno di scaricare questi file sul client? O qualcos'altro? – Paparazzi

risposta

2

Puoi seguire due approcci: Single-file (es. Zip) o multi-file (con ogni file nel proprio blob)). Ecco il mio prendere su di esso, poi una nota su decompressione:

zip unico file

Questo è un modo molto facile da mantenere un insieme raggruppato di file, come un apache installare, o un insieme di risorse statiche . Il download nella memoria locale da un blob è estremamente semplice. E un file zip può gestire qualsiasi livello di directory annidate.

Lato negativo: per aggiornare un singolo file, è necessario creare un nuovo file zip; nessun modo per caricare semplicemente una risorsa modificata.

singoli blob

macchie separate sono grandi quando è necessario aggiornare i singoli file in modo rapido, senza preoccuparsi di altri file. Inoltre, puoi collegare direttamente a questi BLOB sia pubblici che (con firma condivisa di accesso) collegamenti privati ​​e integrati nelle pagine web, ecc. Guarda la mia risposta here, così come @ Sandrino's, per esempi di questo. Oh, e se hai intenzione di esporre i BLOB via CDN, dovranno trovarsi in singoli BLOB.

Lato negativo: nessuna associazione assoluta alle directory nidificate. Lo spazio di archiviazione BLOB è organizzato in base all'account \ container \ blob. Mentre tu puoi simulare le cartelle nidificate, devi fare un po 'di lavoro per mappare i singoli file. Per scaricare singoli BLOB, è necessario afferrare il contenitore e chiamare ListBlobs() per enumerare i singoli nomi di BLOB.

Come decomprimere

Il progetto Eclipse fornisce uno script VBS che è banale da usare. Da un progetto di Visual Studio (o qualsiasi altro script), prenderei in considerazione il download di qualcosa come 7zip, che è gratuito e banale da installare. Quindi scarica il file zip dall'archiviazione BLOB all'archivio locale (nella cartella appropriata) e passa a 7zip.

Spero che questo fornisca una guida sufficiente per prendere la decisione corretta. Se fosse me e stavo memorizzando una build (come tomcat), terrei l'intera struttura della directory in un file zip. Questo mi dà la certezza che non ho rotto qualcosa modificando solo un singolo file. E ... posso mantenere una cronologia corrente delle versioni di tomcat facilmente, con più zip (in blob separati).

+0

Molto interessante. Penso che proverò a comprimere tutto poi. Ciò significa che nel contenitore sono necessari tre file: l'archivio build, l'eseguibile 7zip e uno script batch che indica al ruolo di lavoro di installare 7zip, decomprimere la build e quindi eseguire la distribuzione. Suona bene? Saluti :) – RobVious

+0

Suoni di destra. 7zip non deve necessariamente andare nello stesso contenitore. Avere tutti i contenitori che vuoi. Lo script batch dovrebbe far parte della distribuzione di Windows Azure. Poiché 7zip fornisce un MSI, che può essere eseguito da uno script di avvio. Dovrai comunque scaricare 7zip nella memoria locale per installarlo. Facile da fare con un blob pubblico o scaricarlo direttamente da sourceforge. Se nel BLOB privato, è necessario un modo per accedere alle chiavi o disporre di una firma di accesso condiviso al BLOB o al contenitore. Per ora, mi piacerebbe iniziare semplice e andare con blob pubblico per memorizzare 7zip msi. –

1

Con il rilascio dello strumento AZCOPY è possibile eseguire questa operazione in un'unica riga. Dettagli 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 
Problemi correlati