前言

robocopy特点

  1. 增量同步
    • 默认情况下,robocopy 会跳过目标目录中已存在且未更改的文件,只复制新文件或已更改的文件,从而减少数据传输和资源消耗。
  2. 支持镜像同步
    • 使用 /MIR(Mirror)选项时,robocopy 会使目标目录完全镜像源目录,包括删除目标目录中多余的文件和文件夹。
  3. 支持重试机制
    • robocopy 会自动处理文件复制失败的情况,并支持设置重试次数(/R:n)和重试等待时间(/W:n),以提高任务成功率。
  4. 多线程支持
    • 使用 /MT[:n] 选项,robocopy 支持多线程复制,可以显著提升复制速度(默认线程数为 8)。
  5. 日志记录功能
    • 可以将同步过程记录到日志文件中(/LOG:logfile.txt/LOG+),方便后续查看。
  6. 可用于大批量文件操作
    • robocopy 可以处理数百万个文件和大容量数据,且支持长文件路径(超过 260 字符)。
  7. 复制文件属性
    • 默认会复制文件的时间戳、属性、NTFS ACL(访问控制列表)等元数据。可通过参数调整(如 /COPY:DAT 仅复制数据和时间戳)。
  8. 网络复制支持
    • 支持通过网络路径(如 \\server\share)进行同步,非常适合局域网内的文件传输。

需要注意的是在使用 /MIR选项时要确保目标目录不要再存放与源目录(待同步的文件夹)中不存在的文件。

下面以每隔5分钟备份E:\BlogRoot下的所有文件到P:\备份\hexo_BlogRoot文件夹下为例演示操作步骤。

创建脚本文件

例如把脚本文件放到E:\bat\博客同步,由于文件路径有中文所以文件编码格式需要为ANSI。具体操作如下

  • 新建sync1.txtsync.txt这两个文本文档
  • 复制如下到sync.txt
1
nircmd exec hide "E:\bat\博客同步\sync1.bat"
  • 复制如下到sync1.txt
1
2
@echo off
robocopy "E:\BlogRoot" "P:\备份\hexo_BlogRoot" /MIR /R:0 /W:0
  • 然后分别另存这两个文件为bat格式到当前目录,文件名不变,编码格式改为ANSI

注意:此步非常重要,如果过脚本文件的路径存在中文必须改文件编码的格式为ANSI

编码格式修改

最终结果

此时对应的txt文件可以删除

执行过程:运行sync.bat后会执行sync1.bat。那为啥不直接执行sync1.bat,因为直接运行bat脚本会弹出终端,占据窗口顶层,只有当同步结束后终端才能退出,所以需要使用nircmd 来隐藏命令行窗口。

配置nircmd环境

先下载nircmd蓝奏云分流下载

解压nircmd-x64.zip,以解压到D盘为例

D:\nircmd-x64这个目录添加到系统环境变量。

右键此电脑,下滑找到高级系统设置,点击环境变量,在系统变量下找到Path进行双击,点击新建,粘贴D:\nircmd-x64,点击确定。

添加环境变量

cmd打开终端输入nircmd,出现如下说明环境变量添加成功,点击ok退出。

验证

配置任务计划程序

  • 按下 Win + R,输入 taskschd.msc,然后按回车,打开任务计划程序。

运行窗口

创建新的任务

  • 在任务计划程序中,点击 “创建任务”(不要选择”创建基本任务”)。

创建任务

常规选项

给任务起个名字,例如 “备份hexo”。

选择 “使用最高权限运行”,确保脚本能够正确执行。

创建任务-常规

触发器

转到 触发器 选项卡,点击 “新建…”

  • 选择 “按预定计划”,选择每条,时间设置为0点,每隔5分钟执行一次,持续时间1天。
  • 点击 “确定”

创建任务-触发器

操作

“操作” 下拉框中选择 “启动程序”

“程序/脚本” 字段中,输入批处理脚本的路径

创建任务-操作

条件

转到 条件 选项卡(可选),根据需要配置,通常默认设置

设置

选择 “如果任务失败,重新启动” 等选项,视需要配置;全部配置好后点击确定。

查看是否创建成功

查看是否创建成功

这样就创建好了,退出任务对话框