You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置IIS 10在Visual Studio 2017远程部署时自动备份网站?

实现MSDeploy部署时自动创建IIS站点备份

我来帮你搞定这个自动备份的问题——之前我也踩过类似的坑,其实MSDeploy本身就自带了站点备份的能力,不用折腾复杂的自定义脚本。结合VS2017的发布配置,就能轻松实现每次部署前自动备份。下面分步骤给你讲清楚:

1. 直接在VS2017发布配置里启用备份

这是最简单的方法,不需要手动写命令行:

  • 打开你的网站项目,右键选择「发布」,打开发布配置界面
  • 选中你正在使用的远程发布配置,点击「编辑」按钮
  • 切换到「设置」选项卡,滚动到页面最下方,找到「其他MSDeploy命令行参数」输入框
  • 填入参数:-enableRule:BackupRule
  • (可选)如果想指定备份存储路径,点击「添加参数」:
    • 参数名称填BackupPath,值填你想要的文件夹(比如D:\IIS_Backups\MyWebSite),类型选「文本」
  • 保存配置,下次发布时,MSDeploy会自动在部署前备份你的站点到指定路径

默认情况下,备份会存在IIS的默认备份目录(C:\Windows\System32\inetsrv\backup),但自定义路径更方便管理。

2. 命令行脚本的正确写法(如果偏好手动执行)

如果你之前写的脚本没生效,大概率是参数不对。这里给你一个完整的MSDeploy命令示例,替换成你的实际路径和服务器信息即可:

msdeploy.exe -verb:sync ^
             -source:contentPath="C:\YourProject\bin\Release\PublishOutput" ^
             -dest:contentPath="YourRemoteSiteName",computerName="http://remote-server-ip:8172/msdeploy.axd",username="RemoteAdminUser",password="YourPassword",authType="Basic" ^
             -enableRule:BackupRule ^
             -setParam:name="BackupPath",value="D:\IISBackups\YourSite"

注意几个关键点:

  • 远程服务器要开启Web Management Service(WMSVC),防火墙开放8172端口
  • 部署用户需要有IIS管理器权限和备份目录的读写权限
  • 确保本地和远程的MSDeploy版本兼容(VS2017默认用MSDeploy 3.6,远程服务器也要装对应版本)

3. 可选:自动清理旧备份(避免磁盘占满)

如果想自动删除过期备份,写个简单的PowerShell脚本,配合Windows任务计划定期执行:

# Clean-OldIISBackups.ps1
$backupRoot = "D:\IISBackups\YourSite"
$keepDays = 7  # 保留最近7天的备份

Get-ChildItem -Path $backupRoot -Directory | 
    Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-$keepDays) } | 
    Remove-Item -Force -Recurse

然后创建Windows任务计划,设置每天执行这个脚本即可。

排查之前失败的常见原因

如果之前的尝试没成功,先检查这几点:

  • MSDeploy版本不兼容:远程服务器的MSDeploy版本要和VS2017使用的一致(3.6版本)
  • 权限不足:部署用户没有IIS管理权限或备份目录的读写权限
  • 参数错误:没正确添加-enableRule:BackupRule,或者路径拼写错误
  • 远程服务未开启:WMSVC服务没启动,或者8172端口被防火墙拦截

内容的提问来源于stack exchange,提问作者Misha Sloushch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:44:10