日本DC引っ越しにあたって、複数のコンテナに対して AzCopy いっぱい並べなくても済むようにPowerShell スクリプトを作って転送しています。コンテナのアクセス権も保持。
# ================================================================ # 設定 # ================================================================ # 転送元 $srcacct="転送元ストレージアカウント名" $srckey="転送元キー" # 転送先 $destacct="転送先ストレージアカウント名" $destkey="転送先キー" # 転送したくないコンテナ名 $nontransfercontainers = "automated-sql-export", "backups", "mydeployments", "vsdeploy", "wad-control-container", "wad-iis-logfiles" # コマンドラインへのパス $azure="C:\Program Files (x86)\Microsoft SDKs\Windows Azure\CLI\wbin\azure.cmd" $azcopy="C:\Program Files (x86)\Microsoft SDKs\Windows Azure\AzCopy\AzCopy.exe" # ================================================================ # 実行 # ================================================================ $srccontainersjsonstr = & $azure storage container list --json -a $srcacct -k $srckey $srccontainers = "{ root: " + $srccontainersjsonstr + " }" | ConvertFrom-Json | Select-Object -ExpandProperty root $srccontainersjsonstr $destcontainersjsonstr = & $azure storage container list --json -a $destacct -k $destkey $destcontainerslist = "{ root: " + $destcontainersjsonstr + " }" | ConvertFrom-Json | Select-Object -ExpandProperty root | Select-Object -ExpandProperty name foreach ($item in $srccontainers) { $targetcontainer = $item.name if ($nontransfercontainers.Contains($targetcontainer)) { continue } if ($null -ne $destcontainerslist -and $destcontainerslist.Contains($targetcontainer)) { # $targetcontainer + " --permission " + $item.publicAccessLevel # & $azure storage container set $targetcontainer -a $destacct -k $destkey -p $item.publicAccessLevel } else { & $azure storage container create $targetcontainer -a $destacct -k $destkey -p $item.publicAccessLevel # "CONTAINER is created : " + $targetcontainer } $srcurl = "https://" + $srcacct + ".blob.core.windows.net/" + $targetcontainer $desturl = "https://" + $destacct + ".blob.core.windows.net/" + $targetcontainer # /S : 再帰的 # /XO : 古いファイルは更新しない # /L : 実行しないでリストだけ "COPY " + $srcurl + " to " + $desturl & $azcopy $srcurl $desturl /Y /S /XO /SourceKey:$srcKey /DestKey:$destkey }
コンテナ作成のあたりは PowerShell だけで出来る方がスマートなんだろうけど、調べた当初はストレージのキーだけで作る方法が分からなかった。サブスクリプションをまたぐような状況ではストレージアカウントだけで済む方が便利。