我正在尝试编写一个PowerShell脚本,该脚本可以递归地从Azure Blob复制到Amazon AWS S3 Bucket但是没有太大的成功。
有人能帮助我吗?
$container_name = @("<ContainerItemName>")
$connection_string = 'DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>'
$storage_account = New-AzureStorageContext -ConnectionString $connection_string
$S3Bucket = "<BucketName>"
foreach ($container_item in $container_name)
{
$blobs = Get-AzureStorageBlob -Container $container_item -Context $storage_account
foreach ($blob in $blobs)
{
$item = Get-AzureStorageBlobContent -Container $container_item -Blob $blob.Name -Context $storage_account
Write-S3Object -BucketName $S3Bucket -KeyPrefix $container_item\ -Folder $item -Force
}
}
答案 0 :(得分:1)
一种选择是使用Azure存储数据移动库。您可以在此处下载示例代码:https://github.com/Azure/azure-storage-net-data-movement/tree/master/samples/S3ToAzureSample。以下文章包含有关数据移动库的更多信息:https://azure.microsoft.com/en-us/blog/introducing-azure-storage-data-movement-library-preview-2/
答案 1 :(得分:0)
我没有玩过AWS PowerShell Cmdlet(所以我可能错了)但是快速浏览一下他们的文档here
,我认为你需要首先在本地计算机上保存blob然后再指定您Write-S3Object
cmdlet -File
参数中的路径。
将Azure Blob下载到目录:
Get-AzureStorageBlobContent -Container containername -Blob blob -Destination C:\test\
假设blob的名称是blob.png,请将其上传到S3:
Write-S3Object -BucketName $S3Bucket -KeyPrefix $container_item\ -File "C:\test\blob.png" -Force