Windows服务器任务计划程序自动备份网站
网站跑在Windows服务器上,靠手动复制文件备份迟早会漏。
用系统自带的任务计划程序搭配一段PowerShell脚本,就能让网站文件和数据库每天定时打包到指定目录,无需安装额外软件。
下面按零基础也能照做的顺序,讲清楚脚本怎么写、任务怎么建、备份怎么验。
先备好脚本和备份目录
在服务器上新建两个文件夹,比如 D:\Backup\Script 放脚本,D:\Backup\WebData 存备份文件。
脚本建议用PowerShell,Windows Server 2012及以上都自带。
打开记事本,粘贴以下内容,保存为 backup_web.ps1,编码选 ANSI 或 UTF-8 with BOM,避免中文路径乱码:
$date = Get-Date -Format "yyyyMMdd_HHmmss"
$source = "C:\inetpub\wwwroot"
$dest = "D:\Backup\WebData"
$zip = "$dest\web_$date.zip"
# 打包网站目录
Compress-Archive -Path $source -DestinationPath $zip -Force
# 如果网站用MySQL,加上数据库导出
# & "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe" -u root -p密码 数据库名 > "$dest\db_$date.sql"
# 删除7天前的备份,避免磁盘占满
Get-ChildItem $dest -Filter "*.zip" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force
把 $source 改成你实际的网站根目录,$dest 改成你的备份盘。
数据库那行按需启用,注意 -p密码 中间没有空格。
在任务计划程序里建一个每日任务
按 Win + R 输入 taskschd.msc 打开任务计划程序,右侧点创建任务(不是“创建基本任务”,后者功能少)。
常规选项卡:名称填“网站每日自动备份”,勾选“不管用户是否登录都要运行”,再勾选“使用最高权限运行”。
触发器选项卡:新建触发器,开始任务选“按预定计划”,设置每天凌晨2点执行,勾选“启用”。
操作选项卡:新建操作,操作选“启动程序”。
程序或脚本填 powershell.exe,添加参数填 -ExecutionPolicy Bypass -File "D:\Backup\Script\backup_web.ps1"。
起始于填 D:\Backup\Script。
条件选项卡:取消勾选“只有在计算机使用交流电源时才启动此任务”,避免笔记本或UPS环境下任务不跑。
设置完点确定,输入服务器管理员密码保存。
手动跑一次看结果
不要等到凌晨。
在任务计划程序里找到刚建的任务,右键选运行。
等几秒后刷新,查看“上次运行结果”列。0x0 表示成功,0x1 通常是脚本路径或权限问题。
打开 D:\Backup\WebData,确认生成了类似 web_20250101_020000.zip 的文件。
双击能正常解压,说明备份内容完整。
如果用了数据库导出,还要检查 .sql 文件大小是否正常,几KB的SQL文件基本是导错了。
几个容易踩的坑
脚本里所有路径都用英文或拼音,中文目录在任务计划程序里经常解析失败。
“不管用户是否登录都要运行”必须选,否则服务器锁屏后任务不会触发。
如果任务报 0x1,
先手动在PowerShell里执行一遍脚本:powershell -ExecutionPolicy Bypass -File D:,
\Backup\Script\backup_web.ps1
看报错信息再针对性修。
备份目录不要和网站目录放在同一块物理硬盘,硬盘坏了两个一起丢。
条件允许就再同步一份到远程存储。
怎么确认备份一直在正常工作
任务计划程序里右键任务选“属性”,在“历史记录”选项卡能看到每次执行的时间和结果。
也可以让脚本在结束时写一行日志:
"$date 备份完成" | Out-File "D:\Backup\backup.log" -Append
每周抽查一次最新备份文件能否正常解压恢复,比看任务状态更可靠。
任务显示成功但文件损坏的情况虽然少见,但确实存在。
常见疑问
任务计划程序提示“所选的用户账户无效”怎么办? 在“常规”里点“更改用户或组”,手动输入 服务器名\Administrator,再点“检查名称”确认。
备份文件太大,磁盘不够用怎么办? 脚本里已经有删除7天前备份的逻辑,可以把 AddDays(-7) 改成 -3 只保留3天。
网站有多个目录要备份怎么办? 在脚本里复制多段 Compress-Archive,分别指定不同 $source 和不同的zip文件名即可。
能不能备份到网络共享盘? 可以,把 $dest 写成 \\NAS\backup 形式,但任务计划程序里的运行账户必须有该共享的写权限。
不确定权限时先用管理员账户手动跑一次验证。
按以上步骤配置完成后,Windows任务计划程序会自动完成每日备份,你只需要定期检查备份文件和日志即可。
遇到任务不执行时,优先检查“不管用户是否登录”和“最高权限”这两个勾选项。