Azure Powershell с хранилищем - PullRequest
0 голосов
/ 30 августа 2018

Я хочу скопировать из общего файлового ресурса Azure в blob, и я следую приведенным ниже ссылкам, и я хотел инкрементную копию, которая доступна в azcopy, а не в Start-AzureStorageBlobCopy. И, конечно, Start-AzureStorageBlobIncrementalCopy не будет копировать из общей папки в BLOB-объект.

https://docs.microsoft.com/en-us/powershell/module/azure.storage/start-azurestorageblobincrementalcopy?view=azurermps-6.8.1

https://docs.microsoft.com/en-us/powershell/module/azure.storage/start-azurestorageblobcopy?view=azurermps-6.8.1

Я написал маленькие команды,

$StorageContext = New-AzureStorageContext -StorageAccountName 'neverdelete' -StorageAccountKey 'XXX'
$Srcsh = Get-AzureStorageFile  -ShareName "filetest" -Context $StorageContext
$DestBlob = Get-AzureStorageBlob -Container "client1" -Context $StorageContext
Start-AzureStorageBlobCopy -SrcShare $Srcsh --DestContainer $DestBlob

Но это выдает ошибку ниже:

Start-AzureStorageBlobCopy : Cannot convert 'System.Object[]' to the type 'Microsoft.WindowsAzure.Storage.File.CloudFileShare' required by parameter 'SrcShare'. Specified method 

не поддерживается. В строке: 4 символа: 38 + Start-AzureStorageBlobCopy -SrcShare $ Srcsh --DestContainer $ DestBlob + ~~~~~~ + CategoryInfo: InvalidArgument: (:) [Start-AzureStorageBlobCopy], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgument, Microsoft.WindowsAzure.Commands.Storage.Blob.Cmdlet.StartAzureStorageBlobCopy

Я не знаю, что я делаю здесь неправильно и как мне написать это так, чтобы это могло быть добавочным.

Спасибо, Акшай

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Полагаю, что вы хотите скопировать файлы с общего хранилища в контейнер хранения, вы можете попробовать команду ниже.

$StorageContext = New-AzureStorageContext -StorageAccountName 'StorageAccountName' -StorageAccountKey 'xxxxx'
$Srcsh = Get-AzureStorageFile -ShareName "filesharename" -Context $StorageContext | Get-AzureStorageFile
$DestBlob = Get-AzureStorageContainer -Container "containername" -Context $StorageContext
foreach ($item in $Srcsh)
 {
    Start-AzureStorageBlobCopy -SrcFile $item  -DestContainer "DestContainername" -Context $StorageContext
 }

enter image description here

Моя папка:

enter image description here

Результат в контейнере:

enter image description here

0 голосов
/ 31 августа 2018

Для Start-AzureStorageBlobCopy (Start-AzureStorageFileCopy) командлеты могут копировать только один файл / BLOB-объект, не могут копировать общий ресурс / контейнер и не могут быть возобновлены при сбое.

Инкрементная копия (https://docs.microsoft.com/en-us/rest/api/storageservices/incremental-copy-blob) может копировать только снимок блоба страницы, и в настоящее время Файл не поддерживает его. Как вы говорите, AzCopy поддерживает его, что вы имеете в виду под "инкрементной копией"?

Если вы хотите скопировать все файлы в корневом каталоге в общем ресурсе, вы можете использовать следующую команду. (Обратите внимание, что Get-AzureStorageFile получит только файл / dir первого уровня в общей папке или директории, но не получит файлы в субдире.)

Get-AzureStorageFile -ShareName $shareName -Context $StorageContext
| where {$_.GetType().Name -eq "CloudFile"} |Start-AzureStorageBlobCopy  -DestContainer $containerName -DestContext $StorageContext
-context $StorageContext

Кстати, для любой лазурной проблемы PowerShell, формальный способ - открыть проблему в https://github.com/Azure/azure-powershell/issues,, и соответствующая команда последует за ней.

0 голосов
/ 30 августа 2018

Вы получаете ошибку, потому что -SrcShare параметр ожидает CloudFileShare, и вы передаете список AzureStorageFile / AzureStorageDirectory. Также у вашего -DestContainer есть два --, и вам не хватает контекста.

Так что вы могли бы е. г. Выполните итерацию ваших AzureStorageFiles и вызовите командлет Start-AzureStorabeBlobCopy для каждого из них:

$Srcsh | ForEach-Object {
    Start-AzureStorageBlobCopy -SrcShare ($Srcsh[0] | Select-Object -ExpandProperty Share) -SrcFilePath $_.Name -DestContainer "client1" -Context $StorageContext
}
...