我的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应用程序的方法,但对大型应用程序没有用。最好只提供选定的文件/文件夹备份。
答案 0 :(得分:1)
根据我的经验,将某些文件和目录备份到Azure Blob存储的简单方法是使用AzCopy,您可以将其与Azure WebApp上的Azure触发的WebJob结合使用,以满足您的需求。
这是我实现将Azure WebApp的D:\home
下的资源备份到Blob存储的步骤。
Access is denied
的某种原因而失败。但是,Windows上的AzCopy v8可在Kudo Console中使用。AzCopy
下的C:\Program Files (x86)\Microsoft SDKs\Azure
目录上载到Kudo Console路径D:\home
中,如下图所示。
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
,它可以正常工作。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
的虚拟目录.bat
中,但没有确认提示,它也起作用。因此,我制作了一个backup.bat
文件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
,使用上面的绝对路径作为下面的步骤在下面编写命令行,以将其作为触发的webjob上传,如下图所示。另外,您可以制作一个powershell脚本来执行相同的操作。
{{1}}