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

2eafrhcq  于 2023-02-09  发布在  其他
关注(0)|答案(8)|浏览(274)

我有一个worker角色,用来从Blob Storage OnStart中提取数据。目前,我正在通过上载test.txt文件然后将其下载到本地目录来测试此功能。此功能运行良好。
我现在要将文件夹上载到Blob存储。此文件夹包含批处理脚本以及批处理脚本调用的几个可执行文件。
推荐的方法是什么?我认为压缩文件夹并上传 *.zip文件很容易...但是,一旦我将其下载到本地以供工作者角色处理,在没有任何第三方库的情况下,我如何解压缩它呢?
如果有更好的选择,我愿意接受任何建议。感谢这里的帮助--这个社区在我成长的过程中给了我巨大的帮助:)

d6kp6zgx

d6kp6zgx1#

您可以使用upload-batch

az storage blob upload-batch --destination ContainerName --account-name YourAccountName --destination-path DirectoryInBlob --source /path/to/your/data

这会将源目录中找到的所有文件复制到blob存储中的目标目录。
必须指定SAS令牌(通过--sas-token)或帐户密钥。
还能和服务负责人一起工作。

xv8emn3q

xv8emn3q2#

使用az登录登录Azure cli
1.使用az storage blob upload additional-params上传文件
1.要上载文件夹,请使用az storage blob upload-batch additional-params
有关完整命令,请参阅此处

x7yiwoj4

x7yiwoj43#

您可以采取两种方法:单文件(例如zip)或多文件(每个文件都在自己的blob中)。下面是我的看法,然后是关于解压缩的注意事项:

单个zip文件

这是一种非常简单的方法来维护一组分组的文件,比如Apache安装,或者一组静态资源。从blob下载到本地存储极其简单。而且,zip文件可以处理任何级别的嵌套目录。
缺点:要更新一个文件,你需要创建一个新的zip;无法简单地上载一个修改的资产。

单个斑点

当你需要快速更新单个文件而不用担心其他文件时,单独的blob是很好的。同样,你可以直接链接到这些blob,不管是公共的还是(使用共享访问签名)网页中的私有和嵌入链接等。看看我的答案here,以及@Sandrino的,作为这个例子。哦,如果你打算通过CDN暴露blob,它们必须是单独的一团。
缺点:没有到嵌套目录的绝对Map。Blob存储是按照account\container\blob排列的。虽然你可以模拟嵌套文件夹,但你需要做一些工作来Map单个文件。要下载单个Blob,你需要获取容器并调用ListBlobs()来枚举单个Blob名称。

如何解压缩

Eclipse项目提供了一个vbs脚本,使用起来很简单。从Visual Studio项目(或任何脚本)中,我会考虑下载类似7zip的东西,它是免费的,安装起来也很简单。然后将zip从blob存储下载到本地存储(在适当的文件夹中),并将其传递给7zip。
我希望这能给你提供足够的指导来做出正确的决定。如果是 me,我正在存储一个构建(像tomcat),我会把整个目录结构保存在一个zip中。这给了我保证,我没有因为修改一个文件而破坏什么。而且......我可以很容易地保存tomcat版本的运行历史,使用多个zip(在单独的blob中)。

fjnneemd

fjnneemd4#

随着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
e3bfsja2

e3bfsja25#

你可以使用Azure存储资源管理器https://azure.microsoft.com/en-us/features/storage-explorer/来上传文件夹。它在后台使用azcopy,但有一个用户界面很好。

vd8tlhqk

vd8tlhqk6#

使用Azure Storage Explorer。安装后,你必须登录,然后你可以选择你的Blob和上传文件夹一样,正常的上传过程。
我遇到了同样的问题,试图解决上传压缩文件夹的问题,但在Azure中没有解压缩文件夹的选项。

6tqwzwtp

6tqwzwtp7#

尝试使用Azure CLI和storage-preview扩展
例如,如果你有一个目录“草稿”,你想上传所有的内容

az extension add --name storage-preview --yes
  az storage azcopy blob upload -c container-name --account-name storage-account-name -s draft --recursive
q9rjltbz

q9rjltbz8#

你可以简单地使用storage explorer来完成这个任务。我觉得它很好用。它使用azcopy,如果你想的话你可以复制命令。你可以使用连接字符串来连接你的storage帐户。

相关问题