Я хочу сделать резервную копию определенных файлов и папок моего веб-приложения в хранилище BLOB-объектов с помощью Powershell

В моем веб-приложении большое количество файлов и папок, но я хочу, чтобы резервное копирование выполнялось только для определенных файлов / папок, а затем сохранялось в хранилище BLOB-объектов. Этот подход предназначен для аварийного восстановления.

Код:

$domain = "Resonate"
$user = "abc" 
$pw = "****"

$securepwd = ConvertTo-SecureString $pw -asplaintext -force
$account = $($domain)+"\"+$($user) 
$credential = New-Object System.Management.Automation.PSCredential($account,$securepwd) 

$username = "`$abc"
$password = "***"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"

$filePath = "C:\Users\Raj.Negi\Desktop\PowerShell\Web.config"
$apiUrl = "https://abc.scm.azurewebsites.net/api/vfs/site/wwwroot/Web.config"

Invoke-RestMethod -Uri $apiUrl -Credential $credential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET -OutFile $filePath -ContentType "multipart/form-data"

Connect-AzureRmAccount

$acctKey = (Get-AzureRmStorageAccountKey -Name abcdemo -ResourceGroupName abcRG).Value[0]

$storageContext = New-AzureStorageContext -StorageAccountName "abcdemo" -StorageAccountKey $acctKey

Set-AzureStorageBlobContent -File $filePath -Container "abccontainer" -BlobType "Block" -Context $storageContext -Verbose

В настоящее время он загружает один файл на мой локальный путь, а затем загружает его в лазурный большой двоичный объект. Я хочу, чтобы он напрямую загружал его в BLOB-объект, а не загружал его по локальному пути. Это может быть один файл или целая папка.

Microsoft предоставляет способ частичного резервного копирования вашего веб-приложения, исключая содержимое, но это бесполезно для большого приложения. Лучше, если они будут обеспечивать резервное копирование только выбранных файлов / папок.


person rAJ    schedule 03.01.2019    source источник
comment
Не могли бы вы рассказать нам больше об источнике, в котором хранятся ваши файлы, перед их резервным копированием в Azure? Эти файлы локальны?   -  person Adam Smith - Microsoft Azure    schedule 03.01.2019
comment
Вы пытались реализовать это с помощью кода.   -  person George Chen    schedule 04.01.2019
comment
@ AdamSmith-MSFT Files находится в облаке, поскольку это веб-приложение. Я могу получить доступ через куду или редактор службы приложений. Я хочу скачать его и загрузить в контейнер больших двоичных объектов.   -  person rAJ    schedule 04.01.2019
comment
@GeorgeChen Я пытаюсь сделать это с помощью PowerShell, чтобы позже я мог использовать его с помощью Runbook.   -  person rAJ    schedule 04.01.2019
comment
@rAJ, сложно использовать модуль Runbook PowerShell для его завершения (из-за некоторых ограничений). Вы можете рассмотреть лазурные веб-работы.   -  person Ivan Yang    schedule 17.01.2019


Ответы (1)


По моему опыту, простой способ резервного копирования некоторых файлов и каталогов в хранилище BLOB-объектов Azure - это использовать AzCopy, и вы можете комбинировать его с веб-заданием, запускаемым с помощью Azure, в Azure WebApp, чтобы удовлетворить свои потребности.

Вот мои шаги, которые нужно выполнить для резервного копирования ресурсов D:\home из Azure WebApp в хранилище BLOB-объектов.

  1. Я пробовал использовать AzCopy v10 (только версия x64), чтобы скопировать один файл в хранилище BLOB-объектов Azure на Kudo Console, но не удалось по какой-то причине Access is denied. Однако AzCopy v8 в Windows работает в Kudo Console.
  2. Сначала я установил AzCopy v8 на свой локальный компьютер с Windows и загрузил каталог AzCopy в C:\Program Files (x86)\Microsoft SDKs\Azure по пути D:\home консоли Kudo, как показано на рисунке ниже. введите здесь описание изображения
  3. Я попытался загрузить один файл в свой контейнер test с помощью команды AzCopy /Source:D:\home\site\test /Dest:https://<account name>.blob.core.windows.net/test /DestKey:<account key> /Pattern:"example.txt" по пути D:\home\AzCopy, он работает.
  4. Я попытался загрузить каталог в свой виртуальный каталог backup контейнера test с помощью команды D:\home\AzCopy\AzCopy /Source:D:\home\site\test /Dest:https://ppas.blob.core.windows.net/test/backup /DestKey:b7AzhS60+0hgTWGJdaxXT0w4O6hGuoiL0UVwcLJWIwq/w6hJzKwvt9asFdpfx0yif73ghvLe6urLIo8h6CtZnw== /S /Y без запроса подтверждения, он тоже работает.
  5. Поэтому я создаю .bat файл backup.bat для написания командных строк ниже, используя абсолютный путь в качестве шагов выше, чтобы загрузить его как запускаемое веб-задание, как показано на рисунке ниже. Кроме того, вы можете сделать то же самое с помощью сценария PowerShell.

    D:\home\AzCopy\AzCopy /Source:D:\home\site\test /Dest:https://<account name>.blob.core.windows.net/test/backup /DestKey:<account key> /Pattern:"example.txt" /Y
    D:\home\AzCopy\AzCopy /Source:D:\home\site\test /Dest:https://<account name>.blob.core.windows.net/test/backup /DestKey:<account key> /S /Y
    

введите здесь описание изображения

Работает как положено. введите здесь описание изображения

person Peter Pan    schedule 17.01.2019
comment
Похоже, что и azcopy v10, и v8 находятся в папке D: \ devtools: stackoverflow.com/a/59157936/532675 - person lexeme; 10.04.2020