我想使用powershell将web应用的特定文件和文件夹备份到blob存储

insrf1ej  于 2021-06-24  发布在  Kudu
关注(0)|答案(1)|浏览(386)

我的web应用程序有大量的文件和文件夹,但我只想备份特定的文件/文件夹,然后将它们存储到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应用程序进行部分备份的方法,但对于大型应用程序来说这是无用的。最好只提供选定的文件/文件夹备份。

jgovgodb

jgovgodb1#

根据我的经验,将一些文件和目录备份到azure blob存储的简单方法是使用azcopy,您可以将它与azure webapp上的azure触发webjob结合起来以满足您的需要。
下面是我的步骤来实现备份下的资源 D:\home 从azure webapp到blob存储。
我尝试使用azcopy v10(仅x64版本)将单个文件复制到kudo控制台上的azure blob存储,但由于以下原因失败 Access is denied . 但是,windows上的azcopyv8在kudo控制台中工作。
首先,我在本地windows机器上安装了azcopyv8,并上传 AzCopy 下的目录 C:\Program Files (x86)\Microsoft SDKs\Azure 进入工藤控制台路径 D:\home ,如下图所示。

我试图上传一个文件到我的容器 test via命令 AzCopy /Source:D:\home\site\test /Dest:https://<account name>.blob.core.windows.net/test /DestKey:<account key> /Pattern:"example.txt" 在小路下面 D:\home\AzCopy ,它起作用了。
我试图上传一个目录到我的虚拟目录 backup 集装箱数量 test via命令 D:\home\AzCopy\AzCopy /Source:D:\home\site\test /Dest:https://ppas.blob.core.windows.net/test/backup /DestKey:b7AzhS60+0hgTWGJdaxXT0w4O6hGuoiL0UVwcLJWIwq/w6hJzKwvt9asFdpfx0yif73ghvLe6urLIo8h6CtZnw== /S /Y 如果没有确认提示,它也能工作。
所以我做了一个 .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


它按预期工作。

相关问题