5

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

我现在想上传一个文件夹到blob存储。该文件夹包含批处理脚本以及批处理脚本调用的几个可执行文件。

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

如果有更好的选择,我愿意接受任何建议。感谢这里的帮助 - 这个社区对我来说是一个巨大的帮助,因为我渐渐增加了:)

+0

为什么不上传单个文件?存储便宜。 – Paparazzi

+0

我应该注意到,还有一个包含数百个文件和其他文件夹的项目文件夹。我希望能够下载容器的所有内容,同时保留文件夹,文件名等。这可能吗? – RobVious

+0

请定义拉数据。你需要这些用于工作者角色,还是需要将这些文件下载到客户端?或者是其他东西? – Paparazzi

回答

2

你可以采取两种方法:单文件(例如zip)或多文件(每个文件在自己的blob )。以下是一张就可以了,然后约解压注:

一个ZIP文件

这是保持一个分组组文件,像Apache的安装非常简单的方法,或一组静态的资源。从blob下载到本地存储非常简单。而且,一个zip文件可以处理任何级别的嵌套目录。

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

个别块

独立斑点是伟大的,当你需要快速更新单独的文件,而不用担心其他文件。此外,您可以直接链接到这些blob,无论是公共的还是(与共享访问签名)私人和网页中的enbed链接等。请查看我的回答here以及@ Sandrino的例子。哦,如果你打算通过CDN暴露斑点,他们将需要在个别斑点。

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

如何解压

Eclipse项目提供了一个vbs脚本这是微不足道的使用。从Visual Studio项目(或者其他任何脚本),我会考虑下载类似于7zip的东西,这是免费的,并且可以安装。然后只需将blob存储中的zip下载到本地存储(位于正确的文件夹中),然后将其传递给7zip。

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

+0

非常酷。我想我会试着把所有东西都压缩起来。这意味着在容器中需要三个文件:构建档案,7zip可执行文件和一个批处理脚本,它告诉worker角色安装7zip,解压缩构建,然后运行部署。那个听起来是对的吗?欢呼声:) – RobVious

+0

听起来正确。 7zip不一定必须放在同一个容器中。尽可能多的容器,只要你喜欢。批处理脚本应该是Windows Azure部署的一部分。由于7zip提供了一个MSI,可以从启动脚本执行。您仍然需要将7zip下载到本地存储以进行安装。易于使用公共blob,或直接从sourceforge下载。如果在私人blob中,您需要一种方法来访问密钥,或者拥有对blob或容器的共享访问签名。现在,我会开始简单,并与公共blob去存储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 
相关问题