Миграция Blob'a с одного storage аccount'a на другой в Azure
Вы наверняка сталкивались с тем что невозможно изменить локацию вашего сервиса в Azure и для того чтобы перенести данные, нужно создать новый Storage account и скопировать данные туда. В этой статье мы разберем как это можно сделать.
Во первых, вам понадобится AzureCopy 10 версии, скачать его можно тут.
Shared access signature (SAS) token
С помощью SAS token'a мы можем получить доступ к нашему стореджу с Azure CLI и непосредственно в AzCopy.
Для того чтобы его сгенерировать нужно перейти в Azure портал на ваш storage и найти вкладку Shared access signature
Далее вы должны выбрать уровень доступов и зоны на какие сервисы это распространяется
Хочу обратить внимание на то, что нужно указать список доступных айпи. В моем случае это весь диапазон (0.0.0.0-255.255.255). Для чего это нужно? При первом копировании я использовал Azure CLI на самом портале и у меня не работал скрипт который описан ниже, это было не очевидно, но как оказалось это произошло из-за того что я не указал список доступных ip адресов.
Так же хочу обратить внимание на то что несмотря на то что есть возможность выбрать TableStorage, тейбл сторэдж на данный момент копировать нельзя через AzCopy.
После нажимаем Генерировать SAS и получаем окно с нашими токенами:
Получив токены наших сервисов (source и target) мы можем наконец-то приступить к копированию данных.
Я рекомендую делать эту операцию у вас на машине, а не в Azure CLI на Azure портале, тк внутренней памяти может не хватить, если у вас большой Blob storage.
Копирование контейнеров, директорий и blobs в другой storage account
Синтакс:
azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/?<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/?<SAS-token>' --recursive'
пример:
azcopy copy 'https://mysourceaccount.blob.core.windows.net?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' --recursive
Если же вам нужно скопировать blobl себе в папку или с папки в сторедж, синхронизировать файлы или скачать определенный файл/папку. Детальнее про все команды можно почитать тут