robocopy 特点
增量同步:
默认情况下,robocopy 会跳过目标目录中已存在且未更改的文件,只复制新文件或已更改的文件,从而减少数据传输和资源消耗。
支持镜像同步:
使用/MIR(Mirror)选项时,robocopy 会使目标目录完全镜像源目录,包括删除目标目录中多余的文件和文件夹。
支持重试机制:
robocopy 会自动处理文件复制失败的情况,并支持设置重试次数(/R:n)和重试等待时间(/W:n),以提高任务成功率。
多线程支持:
使用/MT[:n] 选项,robocopy 支持多线程复制,可以显著提升复制速度(默认线程数为 8)。
日志记录功能:
可以将同步过程记录到日志文件中(/LOG:logfile.txt 或/LOG+),方便后续查看。
可用于大批量文件操作:
robocopy 可以处理数百万个文件和大容量数据,且支持长文件路径(超过 260 字符)。
复制文件属性:
默认会复制文件的时间戳、属性、NTFS ACL(访问控制列表)等元数据。可通过参数调整(如/COPY:DAT 仅复制数据和时间戳)。
网络复制支持:
支持通过网络路径(共享路径、搭载 NAS 路径,如\\server\share)进行同步,非常适合局域网内的文件传输。
需要注意的是在使用/MIR 选项时要确保目标目录不要再存放与源目录(待同步的文件夹)中不存在的文件。
下面以每天备份 E:\DBBackup 下的所有文件到 Z:\Nas\DBBackup 文件夹下为例演示操作步骤。
创建脚本文件
例如把脚本文件放到 E:\bat,由于文件路径有中文所以文件编码格式需要为 ANSI。具体操作如下
新建 dbsync.bat 和 dbsynccmd.bat 这两个文本文档
复制如下到 dbsynccmd.bat
nircmd exec hide "E:\bat\dbsync.bat"
复制如下到 dbsync.bat
# 复制同步(拷贝)
@echo off
robocopy "E:\DBBackup" "Z:\Nas\DBBackup" /MIR /R:0 /W:0
# 移动同步(转移)
@echo off
robocopy "E:\DBBackup" "Z:\Nas\DBBackup" /move /e
注意:如果脚本文件的路径存在中文则必须改文件编码的格式为【ANSI】
执行过程:运行 dbsynccmd.bat 后会执行 dbsync.bat 。那为啥不直接执行 dbsync.bat,因为直接运行 bat 脚本会弹出终端,占据窗口顶层,只有当同步结束后终端才能退出,所以需要使用 nircmd 来隐藏命令行窗口。
配置 nircmd 环境
先下载 nircmd (下载地址:https://www.softpedia.com/get/System/System-Miscellaneous/NirCmd.shtml),蓝奏云分流下载(下载地址:https://wwqg.lanzoub.com/iLdpz2fm6awd)
解压 nircmd-x64.zip,以解压到 D 盘为例
把 D:\nircmd-x64 这个目录添加到系统环境变量。
右键此电脑,下滑找到高级系统设置,点击环境变量,在系统变量下找到 Path 进行双击,点击新建,粘贴 D:\nircmd-x64,点击确定。
添加环境变量
cmd 打开终端输入 nircmd,出现如下说明环境变量添加成功,点击 ok 退出。
验证
配置任务计划程序
按下 Win + R,输入 taskschd.msc,然后按回车,打开任务计划程序。
运行窗口
创建新的任务
在任务计划程序中,点击”创建任务”(不要选择”创建基本任务”)。
创建任务
常规选项
给任务起个名字,例如 “数据库文件备份”。
选择”使用最高权限运行”,确保脚本能够正确执行。
创建任务-常规
触发器
转到触发器 选项卡,点击”新建…”。
选择”按预定计划”,选择每条,时间设置为 0 点,每隔 1 天执行一次。
点击”确定”。
创建任务-触发器
操作
在”操作” 下拉框中选择”启动程序”。
在”程序/脚本” 字段中,输入批处理脚本的路径
创建任务-操作
条件
转到条件 选项卡(可选),根据需要配置,通常默认设置
设置
视需要配置;全部配置好后点击确定。
查看是否创建成功
查看是否创建成功
这样就创建好了,退出任务对话框