我想使用 Powershell 将我的网络应用程序的特定文件和文件夹备份到 blob 存储
I want to backup specific files and folder of my web app to the blob storage using Powershell
我的网络应用程序有大量文件和文件夹,但我只想备份特定的 files/folder,然后将它们存储到 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
目前它将一个文件下载到我的本地路径,然后将其上传到 azure blob。我希望它应该直接将它上传到 blob,而不是将它下载到本地路径。
可以是一个文件,也可以是整个文件夹。
Microsoft 提供了通过排除内容来部分备份您的 Web 应用程序的方法,但它对大型应用程序毫无用处。如果他们只提供选定的 files/folders 备份会更好。
根据我的经验,将一些文件和目录备份到 Azure Blob Storage 的简单方法是使用 AzCopy,您可以将其与 Azure WebApp 上的 Azure Triggered WebJob 结合使用以满足您的需求。
这是我实现将 Azure WebApp D:\home
下的资源备份到 Blob 存储的步骤。
- 我尝试在 Kudo 控制台 Windows 上使用 AzCopy v10 (only x64 version) to copy a single file to Azure Blob Storage on Kudo Console, but failed due to some reason about
Access is denied
. However, AzCopy v8。
- 首先,我在本地Windows机器上安装了AzCopy v8,并将
C:\Program Files (x86)\Microsoft SDKs\Azure
下的AzCopy
目录上传到Kudo Console路径D:\home
,如下图.
- 我尝试通过路径
D:\home\AzCopy
下的命令 AzCopy /Source:D:\home\site\test /Dest:https://<account name>.blob.core.windows.net/test /DestKey:<account key> /Pattern:"example.txt"
将单个文件上传到我的容器 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
将目录上传到容器 test
的虚拟目录 backup
,但没有确认提示,它也有效。
所以我制作了一个.bat
文件backup.bat
在下面使用绝对路径编写命令行作为上面的步骤将其作为触发的webjob上传,如下图所示。另外,你可以制作一个 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
它按预期工作。
我的网络应用程序有大量文件和文件夹,但我只想备份特定的 files/folder,然后将它们存储到 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
目前它将一个文件下载到我的本地路径,然后将其上传到 azure blob。我希望它应该直接将它上传到 blob,而不是将它下载到本地路径。 可以是一个文件,也可以是整个文件夹。
Microsoft 提供了通过排除内容来部分备份您的 Web 应用程序的方法,但它对大型应用程序毫无用处。如果他们只提供选定的 files/folders 备份会更好。
根据我的经验,将一些文件和目录备份到 Azure Blob Storage 的简单方法是使用 AzCopy,您可以将其与 Azure WebApp 上的 Azure Triggered WebJob 结合使用以满足您的需求。
这是我实现将 Azure WebApp D:\home
下的资源备份到 Blob 存储的步骤。
- 我尝试在 Kudo 控制台 Windows 上使用 AzCopy v10 (only x64 version) to copy a single file to Azure Blob Storage on Kudo Console, but failed due to some reason about
Access is denied
. However, AzCopy v8。 - 首先,我在本地Windows机器上安装了AzCopy v8,并将
C:\Program Files (x86)\Microsoft SDKs\Azure
下的AzCopy
目录上传到Kudo Console路径D:\home
,如下图. - 我尝试通过路径
D:\home\AzCopy
下的命令AzCopy /Source:D:\home\site\test /Dest:https://<account name>.blob.core.windows.net/test /DestKey:<account key> /Pattern:"example.txt"
将单个文件上传到我的容器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
将目录上传到容器test
的虚拟目录backup
,但没有确认提示,它也有效。 所以我制作了一个
.bat
文件backup.bat
在下面使用绝对路径编写命令行作为上面的步骤将其作为触发的webjob上传,如下图所示。另外,你可以制作一个 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
它按预期工作。