我有一个worker角色,用于从Blob Storage OnStart中提取数据。目前我正在通过上传test.txt文件然后将其下载到本地目录来测试它。这工作正常。
我现在想将文件夹上传到blob存储。此文件夹包含批处理脚本以及批处理脚本调用的多个可执行文件。
建议的方法是什么?我认为压缩文件夹并上传* .zip文件很容易......但是,一旦我在本地下载工作角色来处理,我将如何在没有任何第三方库的情况下解压缩它?
如果有更好的选择,我愿意接受任何建议。感谢您的帮助 - 这个社区对我来说是一个巨大的帮助,因为我提升了:)
答案 0 :(得分:3)
随着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
答案 1 :(得分:2)
您可以采用两种方法:单文件(例如zip)或多文件(每个文件都在自己的blob中)。这是我对它的看法,然后是关于解压缩的说明:
单个zip文件
这是维护分组文件集的一种非常简单的方法,例如apache安装或一组静态资源。从blob下载到本地存储非常简单。并且,zip文件可以处理任何级别的嵌套目录。
下行:要更新单个文件,您需要创建一个新的zip;无法简单地上传一个修改后的资产。
个别blob
当您需要快速更新单个文件而不必担心其他文件时,单独的blob很棒。此外,您可以直接链接到这些blob,无论是公共的还是(使用共享访问签名)私人链接和网页中的链接等。请查看我的答案here,以及@ Sandrino的,例如。哦,如果你打算通过CDN暴露blob,他们将需要在个别blob中。
下行:没有绝对映射到嵌套目录。 Blob存储由account \ container \ blob排列。当可以模拟嵌套文件夹时,您需要做一些工作来映射单个文件。要下载单个blob,您需要获取容器并调用ListBlobs()
来枚举单个blob名称。
如何解压缩
Eclipse项目提供了一个简单易用的vbs脚本。从Visual Studio项目(或任何任何脚本),我会考虑下载像7zip这样的东西,这是免费且易于安装的。然后将zip从blob存储下载到本地存储(在适当的文件夹中),并将其传递给7zip。
我希望这能为您提供足够的指导以做出正确的决定。如果它是 me 并且我正在存储构建(如tomcat),我会将整个目录结构保存为zip。这让我确信我没有通过修改单个文件来破坏某些东西。并且...我可以轻松地保存tomcat版本的运行历史记录,具有多个拉链(在单独的blob中)。
答案 2 :(得分:2)
您可以使用Azure存储资源管理器https://azure.microsoft.com/en-us/features/storage-explorer/上载文件夹。它在后台使用azcopy,但很高兴拥有一个用户界面。
答案 3 :(得分:2)
您可以使用upload-batch
:
az storage blob upload-batch --destination ContainerName --account-name YourAccountName --destination-path DirectoryInBlob --source /path/to/your/data
这会将在源目录中找到的所有文件复制到blob存储中的目标目录中。
必须指定SAS令牌(通过--sas-token
)或帐户密钥。
也可以与服务负责人一起顺畅地工作。
答案 4 :(得分:1)
使用Azure Storage Explorer。安装后,您必须登录,然后可以选择Blob并像正常的上传过程一样上传文件夹。
我遇到了同样的问题,试图解决上传压缩文件夹的问题,但是没有选择在Azure中解压缩该文件夹。
答案 5 :(得分:0)
使用az登录名登录azure cli
要上传文件,请使用 az storage blob上载其他参数
要上传文件夹,请使用 az storage blob upload-batch Additional-params
有关完整的命令,请参考here