5

У меня есть рабочая роль, которую я использую для вывода данных из Blob Storage OnStart. В настоящее время я тестирую это, загружая файл test.txt, а затем загружая его в локальный каталог. Это работает нормально.Как загрузить папку в хранилище Blob?

Теперь я хочу загрузить папку в хранилище памяти. Эта папка содержит пакетный скрипт, а также несколько исполняемых файлов, которые вызывает пакетный скрипт.

Каков рекомендуемый способ достижения этого? Я думаю, что zip-папка и загрузка файла * .zip были бы легкими ... но потом, как только я загружу его локально для роли рабочего, чтобы обработать, как бы я разархивировать его без каких-либо сторонних библиотек?

Если есть лучшие варианты, я открыт для любых предложений. Спасибо за помощь здесь - это сообщество оказало мне огромную помощь, поскольку я наращиваю :)

+0

Почему бы просто не загрузить отдельные файлы? Хранение дешево. – Paparazzi

+0

Я должен был заметить, что есть также папка проекта, содержащая сотни файлов и других папок. Я хотел бы иметь возможность загружать все содержимое контейнера, сохраняя папки, имена файлов и т. Д. Возможно ли это? – RobVious

+0

Пожалуйста, определите данные pull down. Вам нужны эти роли для рабочей роли или вам нужно загрузить эти файлы клиенту? Или что-то другое? – Paparazzi

ответ

2

Вы можете использовать два подхода: однофайловый (например, zip) или многофайловый (с каждым файлом в собственном блобе). Вот мой взгляд на него, то примечание о распаковке:

Single зип файл

Это очень простой способ сохранить сгруппированный набор файлов, как установить Апач, или набор статических ресурсов , Загрузка в локальное хранилище из blob чрезвычайно проста. И zip-файл может обрабатывать любой уровень вложенных каталогов.

Даунсайд: Чтобы обновить один файл, вам нужно создать новый zip; нет возможности просто загрузить один измененный актив.

отдельные сгустки

Отдельные пятна являются большими, когда вам нужно обновить отдельные файлы быстро, не заботясь о других файлах. Кроме того, вы можете напрямую ссылаться на эти капли, будь то публичные или (с общей подписью доступа), частные и вставлять ссылки на веб-страницы и т. Д. Посмотрите на мой ответ here, а также на примеры с Сандрино. О, и если вы планируете разоблачать капли через CDN, они должны быть в отдельных блобах.

Даунсайд: абсолютное сопоставление вложенных каталогов. Хранилище Blob расположено в учетной записи \ container \ blob. Пока вы можете имитировать вложенные папки, вам нужно будет сделать некоторую работу для сопоставления отдельных файлов. Чтобы загрузить отдельные капли, вам нужно захватить контейнер и вызвать ListBlobs(), чтобы перечислять имена отдельных капель.

Как разархивировать

проект The Eclipse предоставляет VBS скрипт, который тривиальна для использования. Из проекта Visual Studio (или, действительно, любого скрипта) я бы подумал о загрузке чего-то вроде 7zip, который является бесплатным и тривиальным для установки. Затем просто загрузите zip из хранилища blob в локальное хранилище (в соответствующей папке) и передайте его в 7zip.

Надеюсь, это даст вам достаточное руководство для принятия правильного решения. Если это было me, и я хранили сборку (например, tomcat), я бы сохранил всю структуру каталогов в zip. Это дает мне уверенность, что я ничего не сломал, изменив только один файл. И ... Я могу легко сохранить текущую историю версий tomcat с несколькими застежками (в отдельных блобах).

+0

Очень круто. Я думаю, что тогда я постараюсь застегнуть все. Это означает, что мне понадобится три файла в контейнере: архив сборки, исполняемый файл 7zip и пакетный скрипт, который сообщает рабочей роли установить 7zip, распаковать сборку и затем запустить развертывание. Звучит ли это правильно? Cheers :) – RobVious

+0

Звуки оправа. 7zip не обязательно должен находиться в одном контейнере. Имейте как можно больше контейнеров. Пакетный сценарий должен быть частью развертывания Windows Azure. Поскольку 7zip предоставляет MSI, который может быть выполнен из сценария запуска. Вам все равно нужно загрузить 7zip в локальное хранилище, чтобы установить его. Легко сделать с публичным блобом или загрузить его прямо из sourceforge. Если в приватном блобе вам нужен способ доступа к ключам или к сигнатуре общего доступа к блобу или контейнеру. На данный момент, я бы начал просто и пошел с публичным блобом для хранения 7zip msi. –

1

С выпуском инструмента AZCOPY вы можете сделать это в одной строке. 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