robocopy

将文件数据从一个位置复制到另一个位置。

语法

robocopy <source> <destination> [<file>[ ...]] [<options>]

例如,若要将名为 yearly-report.mov 的文件从 c:\reports 复制到文件共享 \\marketing\videos,同时启用多线程以提高性能(使用 /mt 参数)并在传输中断时重新开始传输(使用 /z 参数),请键入:

robocopy c:\reports "\\marketing\videos" yearly-report.mov /mt /z

重要

如果从设备的根目录复制了任何数据,则目标目录将在复制过程中采用“隐藏”属性。

参数

参数 描述
<source> 指定源目录的路径。
<destination> 指定目标目录的路径。
<file> 指定要复制的一个或多个文件。 支持通配符(*?)。 如果未指定此参数,*.* 将用作默认值。
<options> 指定要与 robocopy 命令结合使用的选项,包括复制文件重试日志记录作业选项。

复制选项

选项 说明
/s 复制子目录。 此选项自动排除空目录。
/e 复制子目录。 此选项自动包括空目录。
/lev:<n> 仅复制源目录树的前 n 个级别。
/z 以可重启模式复制文件。 在可重启模式下,如果文件复制中断,robocopy 可以从中断位置继续,无需重新复制整个文件。
/b 以备份模式复制文件。 在备份模式下,robocopy 会替代文件和文件夹权限设置 (ACL),后者在未被替代的情况下可能会阻止访问。
/zb 以可重启模式复制文件。 如果文件访问被拒绝,则切换到备份模式。
/j 使用无缓冲 I/O 进行复制(建议用于大文件)。
/efsraw 在 EFS RAW 模式下复制所有已加密的文件。
/copy:<copyflags> 指定要复制的文件属性。 此选项的有效值为:
  • D - 数据
  • A - 属性
  • T - 时间戳
  • X - 跳过替换数据流
  • S - NTFS 访问控制列表 (ACL)
  • O - 所有者信息
  • U - 审核信息
/COPY 选项的默认值为 DAT(数据、属性和时间戳)。 如果使用 /B/ZB,则会忽略 X 标志。
/dcopy:<copyflags> 指定要在目录中复制的内容。 此选项的有效值为:
  • D - 数据
  • A - 属性
  • T - 时间戳
  • E - 扩展属性
  • X - 跳过替换数据流
此选项的默认值为 DA(数据和属性)。
/秒 复制文件和安全性设置(等效于 /copy:DATS)。
/copyall 复制所有文件信息(等效于 /copy:DATSOU)。
/nocopy 不复制文件信息(与 /purge 结合使用时很有用)。
/secfix 修复所有文件的文件安全性,甚至包括已跳过的文件。
/timfix 修复所有文件的文件时间,甚至包括已跳过的文件。
/purge 删除源中不再存在的目标文件和目录。 将此选项与 /e 选项和目标目录结合使用可以防止覆盖目标目录安全性设置。
/mir 镜像目录树(等效于 /e 加上 /purge)。 将此选项与 /e 选项和目标目录结合使用会覆盖目标目录安全性设置。
/mov 移动文件,并在复制文件后从源中将其删除。
/move 移动文件和目录,并在复制这些文件和目录后从源中将其删除。
/a+:[RASHCNET] 将指定的属性添加到复制的文件。 此选项的有效值为:
  • R - 只读
  • A - 存档
  • S - 系统
  • H - 隐藏
  • C - 压缩
  • N - 不为内容编制索引
  • E - 加密
  • T - 临时
/a-:[RASHCNETO] 从复制的文件中删除指定的属性。 此选项的有效值为:
  • R - 只读
  • A - 存档
  • S - 系统
  • H - 隐藏
  • C - 压缩
  • N - 不为内容编制索引
  • E - 加密
  • T - 临时
  • O - 脱机
/create 仅创建目录树和零长度文件。
/fat 仅使用 8.3 字符长度 FAT 文件名创建目标文件。
/256 关闭对超过 256 个字符的路径的支持。
/mon:<n> 监视源,并在检测到超过 n 项更改时再次运行。
/mot:<m> 监视源,并在检测到更改时在 m 分钟后再次运行。
/rh:hhmm-hhmm 指定可以启动新副本的运行时间。
/pf 检查每个文件(不是每个阶段)的运行时间。
/ipg:<n> 指定数据包间的间隙,以便在慢速线路上释放带宽。
/sj 将交接点(软链接)复制到目标路径而不是链接目标。
/sl 不是接在符号链接的后面,而是创建链接的副本。
/mt:<n> 使用 n 个线程创建多线程副本。 n 必须是 1 到 128 的整数。 n 的默认值为 8。 为提高性能,请使用 /log 选项重定向输出。

/mt 参数不能与 /ipg/efsraw 参数结合使用。

/nodcopy 不复制目录信息(执行默认的 /dcopy:DA)。
/nooffload 在不使用 Windows 复制/卸载机制的情况下复制文件。
/compress 在文件传输期间请求网络压缩(如果适用)。
/sparse:<y|n> 启用或禁用在复制过程期间保留文件的稀疏状态。 如果未选择任何选项,则默认为(已启用)。
/noclone 不会尝试将区块克隆作为一种优化。

重要

使用 /secfix 复制选项时,请使用以下附加复制选项之一指定要复制的安全信息类型:

  • /copyall
  • /copy:o
  • /copy:s
  • /copy:u
  • /sec

注意

/mt 参数是在 Windows Server 2008 R2 中引入的,其功能适用于当前版本的 Windows Server。

复制文件限制选项

选项 说明
/iomaxsize:<n>[kmg] 每个读取/写入周期请求的最大 i/o 大小(以 n kgb、 megabytes 或 GB为单位)。
/iorate:<n>[kmg] 请求的 i/o 速率(以 n 兆字节为单位,即每秒 IGA 字节)。
/threshold:<n>[kmg] 限制的文件大小阈值(以 n k gb、megabytes 或 GB为单位)(请参阅备注)。

这些限制选项可用于指定 Robocopy 允许使用的最大 I/O 带宽(以“字节/秒”为单位)。 如果未以“字节/秒”为单位进行指定,则可在已指定 kmg 的情况下使用整数。 即使指定了较小值,受限的最小 I/O 带宽依然为 524288 字节。

文件选择选项

选项 描述
/a 仅复制设置了 Archive 属性的文件。
/m 仅复制设置了 Archive 属性的文件,并重置 Archive 属性。
/ia:[RASHCNETO] 仅包括设置了任何指定属性的文件。 此选项的有效值为:
  • R - 只读
  • A - 存档
  • S - 系统
  • H - 隐藏
  • C - 压缩
  • N - 不为内容编制索引
  • E - 加密
  • T - 临时
  • O - 脱机
/xa:[RASHCNETO] 排除设置了任何指定属性的文件。 此选项的有效值为:
  • R - 只读
  • A - 存档
  • S - 系统
  • H - 隐藏
  • C - 压缩
  • N - 不为内容编制索引
  • E - 加密
  • T - 临时
  • O - 脱机
/xf <filename>[ ...] 排除与指定的名称或路径匹配的文件。 支持通配符(*?)。
/xd <directory>[ ...] 排除与指定的名称和路径匹配的目录。
/xc 排除时间戳相同但文件大小不同的现有文件。
/xn 从复制中排除比目标更新的源目录文件。
/xo 从复制中排除比目标更旧的源目录文件。
/xx 排除目标(而不是源)中存在的额外文件和目录。 排除额外的文件不会从目标中删除这些文件。
/xl 排除源(而不是目标)中存在的“孤立”文件和目录。 排除孤立的文件可防止将任何新文件添加到目标。
/im 包括已修改的文件(更改时间不同)。
/is 包括相同的文件。 相同文件的名称、大小、时间和所有属性都相同。
/it 包括“已调整”的文件。 已调整文件的名称、大小和时间相同,但属性不同。
/max:<n> 指定最大文件大小(以排除大于 n 个字节的文件)。
/min:<n> 指定最小文件大小(以排除小于 n 个字节的文件)。
/maxage:<n> 指定最大文件期限(以排除超过 n 天或早于特定日期的文件)。
/minage:<n> 指定最小文件期限(排除不到 n 天或晚于特定日期的文件)。
/maxlad:<n> 指定最大上次访问日期(排除有 n 天/自 n 日期以来未使用的文件)。
/minlad:<n> 指定最小上次访问日期(排除有 n 天/自 n 日期以来已使用的文件)。如果 n 小于 1900,则 n 指定天数。 否则,n 指定 YYYYMMDD 格式的日期。
/xj 排除交接点(通常默认会包含)。
/fft 采用 FAT 文件时间(精度为两秒)。
/dst 补偿一小时 DST 时差。
/xjd 排除目录的交接点。
/xjf 排除文件的交接点。

重试选项

选项 描述
/r:<n> 指定复制失败时的重试次数。 n 的默认值为 1,000,000(100 万次重试)。
/w:<n> 指定等待重试的间隔时间,以秒为单位。 n 的默认值为 30(等待 30 秒)。
/reg /r/w 选项中指定的值保存为注册表中的默认设置。
/tbd 指定系统等待定义共享名称(重试错误 67)。
/lfsm 在支持复制、暂停和恢复的低可用空间模式下运行(请参阅备注)。
/lfsm:<n>[kmg] 指定以 n k gb、megabytes 或 GB为单位的楼层大小

日志记录选项

选项 描述
/l 指定仅列出文件(而不复制、删除或设置时间戳)。
/x 报告所有额外的文件,而不仅仅是已选择的文件。
/v 生成详细输出,并显示所有已跳过的文件。
/ts 在输出中包括源文件时间戳。
/fp 在输出中包括文件的完整路径名称。
/bytes 以字节为单位输出大小。
/ns 指定不记录文件大小。
/nc 指定不记录文件类。
/nfl 指定不记录文件名。
/ndl 指定不记录目录名称。
/np 指定不显示复制操作的进度(到目前为止复制的文件或目录数)。
/eta 显示复制的文件的估计到达时间 (ETA)。
/log:<logfile> 将状态输出写入到日志文件(覆盖现有的日志文件)。
/log+:<logfile> 将状态输出写入日志文件(将输出追加到现有日志文件)。
/unilog:<logfile> 将状态输出作为 Unicode 文本写入日志文件(覆盖现有日志文件)。
/unilog+:<logfile> 将状态输出作为 Unicode 文本写入日志文件(将输出追加到现有日志文件)。
/tee 将状态输出写入控制台窗口和日志文件。
/njh 指定没有作业标头。
/njs 指定没有作业摘要。
/unicode 将状态输出显示为 Unicode 文本。

作业选项

选项 描述
/job:<jobname> 指定要从命名的作业文件派生参数。 若要运行 /job:jobname,必须首先运行 /save:jobname 参数来创建作业文件。
/save:<jobname> 指定要将参数保存到命名的作业文件。 此参数必须在运行 /job:jobname 之前运行。 必须在此参数之前指定所有复制、重试和日志记录选项。
/quit 处理命令行后退出(以查看参数)。
/nosd 指示未指定任何源目录。
/nodd 指示未指定目标目录。
/if 包括指定的文件。

注解

  • 在卷的根目录上使用 /PURGE/MIR 以前会导致 robocopy 也对系统卷信息目录中的文件应用请求的操作。 如果指定了其中任一选项,则不会再出现这种情况,robocopy 将跳过复制会话的顶级源和目标目录中具有该名称的任何文件或目录。

  • 仅当源和目标文件系统支持更改时间戳(例如 NTFS)并且源和目标文件具有不同的更改时间但其他方面都相同时,修改的文件分类才适用。 默认不会复制这些文件。 指定 /IM 以包含它们。

  • /DCOPY:E 标志请求应尝试为目录复制扩展属性。 如果无法复制目录的 EA,Robocopy 将继续执行。 /COPYALL 中不包含此标志。

  • 如果指定了 /IoMaxSize/IoRate,robocopy 将启用复制文件限制以减少系统负载。 可以对两者进行调整来优化值和复制参数,但允许系统和 robocopy 根据需要将它们调整为允许的值。

  • 如果使用了 /Threshold,它将指定用于参与限制的最小文件大小。 小于该大小的文件将不会受到限制。 所有三个参数的值均可后跟一个可选后缀字符,例如 [KMG](千字节、兆字节、千兆字节)。

  • 使用 /LFSM 请求 robocopy 在“低可用空间模式”下运行。 在此模式下,每当文件复制导致目标卷的可用空间低于“下限”值时,robocopy 都将暂停。 可以使用 /LFSM:n[KMG] 标志显式指定此值。

  • 如果指定的 /LFSM 没有显式的下限值,则下限将设置为目标卷大小的 10%。 低可用空间模式与 /MT/EFSRAW 不兼容。

退出(返回)代码

说明
0 未复制任何文件。 未遇到任何失败。 没有不匹配的文件。 目标目录中已存在这些文件;因此跳过了复制操作。
1 已成功复制所有文件。
2 目标目录中的其他一些文件在源目录中不存在。 未复制任何文件。
3 复制了一些文件。 存在其他文件。 未遇到任何失败。
5 复制了一些文件。 某些文件不匹配。 未遇到任何失败。
6 存在其他文件和不匹配的文件。 未复制任何文件,也没有遇到任何故障,这意味着文件已存在于目标目录中。
7 已复制文件,存在文件不匹配情况,并且存在其他文件。
8 有多个文件未复制。

注意

任何等于或大于 8 的值表示复制操作期间至少发生了一次失败。

示例

强烈建议在运行 robocopy 命令时创建一个日志文件,该日志文件可在进程完成验证其完整性后查看。 在以下示例中,每一个都使用 /LOG: 参数。 若要将任何日志信息追加到同一日志文件,请改用 /LOG+: 参数。

若要将所有文件和子目录(包括空目录)从“Records”文件夹复制到驱动器“D”上的“Backup”文件夹,请键入以下内容:

robocopy C:\Users\Admin\Records D:\Backup /E /ZB /LOG:C:\Logs\Backup.log

若要将“Records”文件夹的内容镜像到驱动器“D”上的“Backup”文件夹,删除目标中不存在于源中的任何文件,重试 2 次,每次重试之间等待 5 秒,请键入以下内容:

robocopy C:\Users\Admin\Records D:\Backup /MIR /R:2 /W:5 /LOG:C:\Logs\Backup.log

若要将所有不为空的文件和子目录从“Records”文件夹复制到驱动器“D”上的“Backup”文件夹,使用 16 个多线程复制操作保留文件数据、属性和时间戳,请键入以下内容:

robocopy C:\Users\Admin\Records D:\Backup /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log

若要将文件和子目录(不包括空目录)从“Records”文件夹移动到驱动器“D”上的“Backup”文件夹,并排除超过 7 天的文件,请键入以下内容:

robocopy C:\Users\Admin\Records D:\Backup /S /MAXAGE:7 /MOV /LOG:C:\Logs\Backup.log

若要将所有文件和子目录(包括空目录)从“Records”文件夹复制到驱动器“D”上的“Backup”文件夹,显示每个文件的估计时间,并删除目标中不存在于源中的所有文件和目录,请键入以下内容:

robocopy C:\Users\Admin\Records D:\Backup /ETA /PURGE /LOG:C:\Logs\Backup.log

若要将“C”驱动器上名为“Records”的文件夹中的所有文件和子目录复制到“D”驱动器上名为“Backup”的文件夹,同时还在复制操作期间将 I/O 速率限制为 1 兆字节/秒,则请键入以下内容:

robocopy C:\Records D:\Backup /iorate:1m