Windows定时备份:任务计划程序设置

适用环境:Windows Server 2019/2022/2025,Windows PowerShell与任务计划程序可用。先按Robocopy文件备份与恢复验证完成一次手工备份和试恢复;需要后台运行时须由管理员选择合适的任务账号。

本教程解决“手动能备份,定时却没产物”的问题。任务计划程序只负责按条件启动程序,不会判断文件是否一致、备份是否能恢复。先把静态目录备份保存成独立脚本,再配置触发器和结果检查。

保存可以返回正确状态的脚本

在 C:\BaoleBackup 建立受控目录,将以下内容保存为 backup-files.ps1。先修改真实源和目标路径,确认它们互不包含。脚本内不写登录密码,也不直接复制运行中的数据库文件。

$ErrorActionPreference = 'Stop'
try {
    $sourceDir = 'C:\Sites\Example'
    $backupRoot = 'E:\Backups'
    if (-not (Test-Path -LiteralPath $sourceDir -PathType Container)) { throw '源目录不存在' }
    $runDir = Join-Path $backupRoot ('files-' + (Get-Date -Format 'yyyyMMdd-HHmmss'))
    New-Item -ItemType Directory -Path $runDir -ErrorAction Stop | Out-Null
    $copyLog = Join-Path $runDir 'robocopy.log'
    robocopy $sourceDir (Join-Path $runDir 'data') /E /COPY:DAT /DCOPY:DAT /XJ /R:2 /W:3 /LOG:$copyLog
    $copyStatus = $LASTEXITCODE
    if ($copyStatus -ge 8) { throw "Robocopy失败:$copyStatus" }
    "COMPLETE $runDir" | Set-Content -LiteralPath (Join-Path $runDir 'COMPLETE.txt') -Encoding UTF8
    exit 0
} catch {
    Write-Error $_ -ErrorAction Continue
    exit 1
}

使用未来执行任务的同一账号,在 PowerShell 运行 & C:\BaoleBackup\backup-files.ps1,并检查 $LASTEXITCODE、日志及恢复样本。若组织的脚本执行策略阻止运行,应使用经批准的脚本签名或管理方式,不在任务参数里长期绕过安全策略。

在任务计划程序创建任务

中文任务属性常规页中的任务名、运行账户、用户登录选项和最高权限复选框,账户标识已遮挡。
中文任务属性“常规”页字段示例:任务名、运行账户、登录方式和权限选项可在同页核对,账户标识已遮挡。原图选中后台运行和最高权限,仅说明选项位置,不是本文默认推荐;底部“配置”是兼容性设置,不代表系统实际版本。
中文新建操作窗口中的程序或脚本、添加参数和起始于三个空白字段。
中文“新建操作”窗口字段示例,Windows版本未注明:分别核对“程序或脚本”“添加参数”“起始于”。图中输入为空,按正文填写并验证,不代表任务已保存或运行。
  1. 按 Win+R,输入 taskschd.msc,打开“任务计划程序”。在“任务计划程序库”中选择“创建任务”,名称填写 BaoleFileBackup。
  2. “常规”选择实际有源读取权、目标写入权的账号。需要无人登录也运行时选择对应选项,由本人按系统要求提供凭据;不把密码写进脚本或文档截图。仅在确实需要时选择最高权限。
  3. “触发器”新建每天运行的时间,核对服务器时区及首次开始日期。
  4. “操作”选择“启动程序”:程序使用 Windows PowerShell 的完整路径;参数填 -NoProfile -File "C:\BaoleBackup\backup-files.ps1";“起始于”填 C:\BaoleBackup。
  5. “设置”中选择任务已运行时不启动新实例。按实际维护窗口设置合理的最长运行时间;不要让正常的大备份被过短时间强行终止。

程序路径可在现有 PowerShell 中通过 (Get-Command powershell.exe).Source 查看。后台任务不应依赖仅在当前远程桌面会话映射的盘符;网络共享应使用明确的 UNC 路径并核实任务账号权限。

先手动触发任务,再等一次真实定时触发

中文任务库中的上次运行时间和上次运行结果列,原图示例0x0保留,创建者标识已遮挡。
中文任务库字段位置示例,Windows版本未注明:核对“上次运行时间”和“上次运行结果”。图中2018年nas任务的0x0是历史示例,不是本文脚本或本轮备份运行结果;仍需检查实际日志新增内容。
  1. 在任务库选中任务,点击“运行”,等待状态从运行中结束。
  2. 检查“上次运行时间”“上次运行结果”和历史记录。脚本按本例返回0时通常显示0x0;这只说明脚本返回成功,还要打开新批次查看日志、COMPLETE.txt和实际文件。
  3. 等到设置的时间后,确认新增的是那次定时批次,而不是刚才手动留下的文件。
  4. 抽样恢复及校验成功后,才把任务记为已投入使用。定期查看失败、没有触发及目标空间不足的情况。

后台失败时先查这三处

现象 优先检查
手动运行成功、后台失败 任务账号、网络共享凭据、映射盘符和文件权限。
有上次运行时间但没有备份 程序路径、-File参数引号、工作目录、脚本日志与返回码。
任务一直运行或被终止 源文件占用、重试设置、备份体量、最长运行时间以及存储速度。