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