azure - 将多个文件夹从本地存储上传到 Azure,作为包含文件夹内容的新容器
问题描述
我们拥有包含 100 个容器的 Azure Blob 存储帐户。文件结构如下所示:
集装箱_01 | --somemedia.jpg --anothermedia.jpg
集装箱_02 | --secondcontainersmedia.jpg --andSoOn --AndSoOnAndSoOn
我的客户希望将所有容器下载到本地存储,以便在必要时将它们重新上传到 Azure。在做了一些研究后,我发现了这篇博文。从那里更新脚本以满足我的需要(只是从 AzureRM 更新到 AZ 以及我的个人连接和本地路径),我想出了以下合适的脚本来下载文件。
$destination_path = 'C:\Storage Dump Test'
$connection_string = '[Insert Connection String]'
$storage_account = New-AzStorageContext -ConnectionString $connection_string
$containers = Get-AzStorageContainer -Context $storage_account
Write-Host 'Starting Storage Dump...'
foreach ($container in $containers)
{
Write-Host -NoNewline 'Processing: ' . $container.Name . '...'
$container_path = $destination_path + '\' + $container.Name
if(!(Test-Path -Path $container_path ))
{
New-Item -ItemType directory -Path $container_path
}
$blobs = Get-AzStorageBlob -Container $container.Name -Context $storage_account
Write-Host -NoNewline ' Downloading files...'
foreach ($blob in $blobs)
{
$fileNameCheck = $container_path + '\' + $blob.Name
if(!(Test-Path $fileNameCheck ))
{
Get-AzStorageBlobContent `
-Container $container.Name -Blob $blob.Name -Destination $container_path `
-Context $storage_account
}
}
Write-Host ' Done.'
}
Write-Host 'Download complete.'
所以现在我的本地存储上有一个目录,其中包含数百个包含媒体项目的文件夹。我需要创建一个 PS 脚本(或找到其他方法)来基本上做相反的事情 - 获取该目录中的所有文件夹,使用文件夹名称创建容器,并将每个文件夹中的项目上传到适当的容器。
我应该如何开始呢?
解决方案
azcopy
使用而不是使用 azure cmdlet ,您将获得更多、更快的成功。复印:
azcopy copy '<local-file-path>' 'https://<storage-account-name>.<blob| dfs>.core.windows.net/<container-name>/<blob-name>'
它还可以创建容器:
azcopy make 'https://mystorageaccount.blob.core.windows.net/mycontainer'
azcopy 可以下载整个容器,而无需指定每个文件。利用--recursive
请参阅:https ://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10
推荐阅读
- package - 如何为 Symfony 创建一个作曲家包
- arrays - 使用 Nifi 将带有数组的 json 插入 BigQuery 的问题
- java - 如何使用多行文本呈现网页java spring boot
- angular - 使用 ngIf 单击外部指令?
- apache-kafka - kafka 中的最大消息保留
- gsm - 如何使用 energia 将 msp430G2553 与 GSM 模块连接
- php - 一次不能输入超过一个数字
- python - 程序不会循环回到其他选择
- node.js - Nodejs lambda函数api调用返回false
- python - cv2.imwrite 不保存图像