【问题标题】:Massive copy files from a web app site to another将文件从 Web 应用程序站点大量复制到另一个站点
【发布时间】:2017-01-28 00:26:58
【问题描述】:

如何从另一个 web 应用加载到一个 web 应用文件而不需要在本地下载完整副本?

我们有几个站点(大多数是共享定价),我们需要从另一个站点加载请求数据,应用程序架构仅在请求时才需要这种分离和“同步”,这可能不需要本地下载所有文件?

我看了看:

堆栈溢出:: How do I copy a website from one azure website to another (not deployment slots)?

堆栈溢出 :: Is it possible to copy an Azure Website?

但两者都没有帮助。 SiteReplicator 似乎过于自动化(无法使其工作)并且备份不允许粒度(90% 的操作系统站点需要同步,但 10% 不应该)。并且下载工作区并没有避免本地加载,

什么会很棒,它将是一个 ftp2ftp 连接,所以我可以镜像所需的文件夹而不是其余的,但是通过 .scm.azurewebsites.net 的 cdm 不允许 ftp(访问被拒绝)

【问题讨论】:

  • 不确定我是否理解这个问题。为什么不能通过关联的版本控制(例如 github)将相同的代码部署到不同的 Web 应用程序?您说的是尽量避免下载完整副本,但是……您不会已经在本地或版本控制中拥有您用于初始部署的应用程序副本吗?
  • 您是否将一个资源组中的 Web 应用程序克隆到另一个资源组中的克隆 Web 应用程序中?
  • @DavidMakogon,对不起,我写错了标题我可能给出了错误的意思,我不想克隆整个应用程序,但系统上大约 90% 的内容确实是跑步。由于应用程序要求,那些必须在自己的 WebApp 上(共享资源不是一种选择),也不是自动的(仅应要求)。
  • @juvchan,不是克隆网络应用,而是将其 90% 的内容“注入”到另一个应用中

标签: azure azure-web-app-service


【解决方案1】:

Azure 应用服务(Web 应用、移动应用、API 应用等)支持应用克隆,这使用户能够将现有的 Web 应用克隆到不同区域或新创建的应用中同一地区。

Azure App Service App Cloning Using Azure Portal

Azure App Service App Cloning Using PowerShell

重要提示:目前仅高级应用服务计划支持应用克隆。

要解决此限制,您可以将要克隆的 Web 应用扩大到高级层,然后在克隆完成后缩小到原始层。

【讨论】:

  • 是的,我知道克隆的事情。假设一个 webApp 是一个厨房,在配置、关联域、SSL、备份计划和许多其他方面,它在“ftp”中有一堆文件[让我们称之为冰箱里的东西和抽屉里的小工具] .我想要的是回到家中的新厨房,我不需要更换天花板、炊具或冰箱本身。只想要一根魔杖,可以把所有食物和小工具放在这个新厨房里。不是真的克隆我的旧厨房,即使是同样平方米的新公寓也不适合。只是我的东西,但要避免移动盒子;-)
【解决方案2】:

根据我的理解,我假设您可以利用 KUDU REST API 中的 Zip API 从源 Web 应用程序下载特定文件夹/文件作为 zip 文件,然后将压缩文件展开到另一个 Web 应用程序中的文件夹中。下面是使用 PowerShell 使用 Zip REST API 的示例:

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

$apiUrl = "https://{sitename}.scm.azurewebsites.net/api/zip/site/wwwroot"
$filePath = "C:\Temp\books.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $filePath -ContentType "multipart/form-data"

此外,您可以利用 Azure WebJobs 在源 Web 应用的上下文中作为后台进程运行,以定期或手动调用 Zip API 以在两个 Web 应用之间同步内容。

注意:您可以利用 Web 应用程序的文件系统作为临时文件夹来存储您的 zip 文件。更多详情可以参考Azure Web Apps File system

【讨论】:

    【解决方案3】:

    我很惊讶他们还没有直接在 Azure 中添加插槽复制功能。为了在之前的评论中回答 David Makogon 的问题,我们有一些大文件被排除在我们的部署过程之外,因此简单地部署到一个空插槽并不会重新创建我们的应用程序启动所需的所有文件。我通过拼凑其他一些指南找到了一个迂回的解决方案。

    1. 按照本指南安装 Azure Powershell 并登录到您的 Azure 帐户:https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-2.6.0
    2. 执行以下命令获取应用服务计划,然后根据该应用服务计划创建新槽。有效克隆到新插槽。

    $srcapp = Get-AzWebApp -ResourceGroupName "ResourceGroupName" -Name "AppServiceName"

    $destapp = New-AzWebAppSlot -ResourceGroupName ResourceGroupName -Name "AppServiceName" -Slot "SlotName" -AppServicePlan "AppServicePlan" -SourceWebApp $srcapp

    请注意,第二个命令中的资源组名称没有用引号括起来。

    快速创建现有应用服务的新实例。我使用 Azure 中内置的克隆应用服务功能克隆了它。然后使用上述命令创建部署槽。

    【讨论】:

    • 这不是问题的答案,最好作为问题的评论添加。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2018-06-06
    • 2015-03-25
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多