Я попытался найти простой способ асинхронного копирования контейнера из одного хранилища в другое через интерфейс командной строки Azure. Что-то, что можно сделать с помощью азкопии. На моей машине не установлено azcopy, но Azure CLI - это.
Вопрос: Я понимаю, что мне нужно копировать один шарик за другим. Как проверить, что операция копирования завершена?
Что-то вроде этого работает, но вызов az storage blob show
один за другим занимает очень много времени (минут).
$backup = 'somecontainer'
$exists = (az storage container exists --name $backup --account-name an --account-key ak --output tsv) -match 'true'
if (!$exists) {
az storage container create --name $backup --account-name mt --account-key mk
}
$blobs = az storage blob list --container-name $backup --account-name an --account-key ak | ConvertFrom-Json
# copy one by one
$blobs.name | % {
$name = $_
az storage blob copy start --destination-blob $name --destination-container $backup --source-blob $name --source-container $backup --account-name mt --account-key mk --source-account-name an --source-account-key ak
}
# check operation status
$results = $blobs.name | % {
az storage blob show --container-name $backup --name $_ --account-name mt --account-key mk | ConvertFrom-Json
}
# still unfinished copy opearations:
$results | ? { !($_.properties.copy.completiontime) } | % { $_.name }