如何将文件夹上传到Blob存储?

Rob*_*ous 7 azure azure-storage azure-storage-blobs azure-worker-roles

我有一个worker角色,用于从Blob Storage OnStart中提取数据.目前我正在通过上传test.txt文件然后将其下载到本地目录来测试它.这工作正常.

我现在想将文件夹上传到blob存储.此文件夹包含批处理脚本以及批处理脚本调用的多个可执行文件.

推荐的方法是什么?我认为压缩文件夹并上传*.zip文件很容易......但是,一旦我在本地下载工作角色来处理,我将如何在没有任何第三方库的情况下解压缩它?

如果有更好的选择,我愿意接受任何建议.感谢您的帮助 - 当我加速时,这个社区对我来说是一个巨大的帮助:)

kap*_*kap 8

您可以使用upload-batch

az storage blob upload-batch --destination ContainerName --account-name YourAccountName --destination-path DirectoryInBlob --source /path/to/your/data
Run Code Online (Sandbox Code Playgroud)

这会将在源目录中找到的所有文件复制到 blob 存储中的目标目录。

--sas-token必须指定SAS 令牌(通过)或帐户密钥。

还可以与服务主体顺利合作。


Shu*_*pta 5

使用 az login 登录到 azure cli

  1. 上传文件使用 az storage blob upload additional-params

  2. 上传文件夹使用 az storage blob upload-batch additional-params

完整命令请参考这里


Dav*_*gon 3

您可以采用两种方法:单文件(例如 zip)或多文件(每个文件位于其自己的 blob 中)。这是我的看法,然后是关于解压的注释:

单个 zip 文件

这是维护一组文件(例如 apache 安装或一组静态资源)的非常简单的方法。从 blob 下载到本地存储非常简单。而且,zip 文件可以处理任何级别的嵌套目录。

缺点:要更新单个文件,您需要创建一个新的 zip;无法简单地上传一项修改后的资产。

单个斑点

当您需要快速更新单个文件而不用担心其他文件时,单独的 blob 非常有用。此外,您可以直接链接到这些 blob,无论是公共的还是(使用共享访问签名)私有的,以及网页中的嵌入链接等。请参阅我的答案以及 @Sandrino 的答案,以获取相关示例。哦,如果您计划通过 CDN 公开 Blob,则它们需要位于单独的 Blob 中。

缺点:没有到嵌套目录的绝对映射。Blob 存储按帐户\容器\blob 排列。虽然您可以模拟嵌套文件夹,但您需要做一些工作来映射单个文件。要下载单个 blob,您需要获取容器并调用ListBlobs()以枚举各个 blob 名称。

如何解压

Eclipse项目提供了一个vbs脚本,使用起来很简单。从 Visual Studio 项目(或实际上任何脚本)中,我会考虑下载类似7zip 的东西,它是免费的并且安装起来很简单。然后只需将 zip 从 blob 存储下载到本地存储(在正确的文件夹中),并将其传递给 7zip。

我希望这能为您提供足够的指导来做出正确的决定。如果是并且要存储构建(例如 tomcat),我会将整个目录结构保存在 zip 中。这让我确信我没有因为修改一个文件而破坏任何东西。而且...我可以通过多个 zip(在单独的 blob 中)轻松保存 tomcat 版本的运行历史记录。