Azure 将文件从一个web应用程序站点大量复制到另一个web应用程序站点

Azure 将文件从一个web应用程序站点大量复制到另一个web应用程序站点,azure,azure-web-app-service,Azure,Azure Web App Service,如果不需要在本地下载完整副本,如何从另一个web应用程序加载到web应用程序文件 我们有几个站点(大多数基于共享定价),需要从另一个站点加载请求数据,应用程序体系结构只需要在请求时进行分离和“同步”,这是否可能不需要本地下载所有文件 我看了看: 堆栈溢出:: 堆栈溢出:: 但两者都没有帮助。SiteReplicator似乎过于自动化(无法使其正常工作),而且备份不允许粒度(90%的操作系统站点需要同步,但10%不应该同步)。上的下载工作区无法避免本地加载 很好的是,这将是一个ftp2ftp连接

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

我们有几个站点(大多数基于共享定价),需要从另一个站点加载请求数据,应用程序体系结构只需要在请求时进行分离和“同步”,这是否可能不需要本地下载所有文件

我看了看:

堆栈溢出::

堆栈溢出::

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

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

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

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


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

根据我的理解,我假设您可以利用
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”
调用RestMethod-Uri$apirl-Headers@{Authorization=('Basic{0})-f$base64AuthInfo}-UserAgent$UserAgent-Method PUT-infle$filePath-ContentType“多部分/表单数据”
此外,您还可以利用在源Web应用的上下文中作为后台进程运行,定期或手动调用Zip API,以便在两个Web应用之间同步内容


注意:您可以利用Web应用程序的文件系统作为临时文件夹来存储zip文件。有关更多详细信息,请参阅。

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

  • 按照此指南安装Azure Powershell并登录到您的Azure帐户:
  • 执行以下命令以获取应用程序服务计划,然后基于该应用程序服务计划创建新插槽。有效地克隆到新插槽 $srcapp=Get-AzWebApp-ResourceGroupName“ResourceGroupName”-Name“AppServiceName”

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

    注意,在第二个命令中,resourcegroupname没有用引号括起来


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

    我不确定我是否理解这个问题。为什么不能通过关联的版本控制(例如github)将相同的代码部署到不同的web应用程序?你说的是尽量避免下载完整副本,但是。。。您是否已经在本地或版本控制中拥有了应用程序的副本(用于初始部署)?您是否正在将一个资源组中的web应用程序克隆到另一个资源组中的克隆web应用程序?@DavidMakogon,对不起,我在标题中犯了一个错误我可能给出了错误的含义,我不想克隆整个应用程序,但是,在一个确实正在运行的系统上,大约90%的内容。由于应用程序要求,这些应用程序必须是自己的web应用程序(共享资源不是一个选项),也不是自动的(只是根据请求)。@juvchan,不是克隆web应用程序,而是将其90%的内容“注入”到另一个应用程序上是的,我知道克隆的事情。假设一个webApp是一个厨房,在配置、相关域、SSL、备份计划和大量其他配置中,它在“ftp”中有一堆文件[我们称之为冰箱里的东西和抽屉里的小工具]。我想要的是像回到家一样,在一个新的厨房里,我不需要改变天花板、炊具或冰箱本身。我只要一根魔杖,把所有的食物和小玩意放在这个新厨房里。不是真的克隆我的旧厨房,将不适合在新的单位,即使相同的平方米。只是我的东西,但避免移动箱子;-)这不是问题的答案,最好添加为问题的注释。谢谢