当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] RoboCopy - 带有示例的终极指南

作者:精品下载站 日期:2024-12-14 18:54:24 浏览:14 分类:玩电脑

RoboCopy - 带有示例的终极指南


Robocopy 是一款出色的命令行实用程序,用于快速有效地将大量数据从一个位置复制、镜像或移动到另一个位置。 Robocopy 的强大之处在于它带有大量选项/开关,您可以使用它们来微调和优化复制操作。

但所有这些可能的选择也是 Robocopy 的常见问题。您可能不会每天使用它,那么您需要使用哪些开关(选项)?我们如何复制 NTFS 权限或跳过空文件夹?

在本文中,我们将借助常用示例来了解 Robocopy。最佳实践是什么?如何加快复制操作?

基础知识

在我们深入研究 Robocopy 并研究所有选项之前,让我们首先从基础知识开始。第一个也是最重要的一点是,您可以使用 /L 在测试模式下运行 Robocopy。这将列出结果,而无需实际复制或删除任何文件或文件夹。

Robocopy "D:\test files" "F:\lab" /L

[玩转系统] RoboCopy - 带有示例的终极指南

如果查看结果,您将看到哪些文件或文件夹将被复制、删除或跳过。当您刚接触 Robocopy 时,首先使用 /L 参数 确实是一个好主意,可以检查结果是否符合预期。

复制所有文件

当您在没有任何开关的情况下使用 Robocopy 时,它只会将文件从给定位置复制到目标。它不会从给定目录复制任何子文件夹,只会复制没有 NTFS 权限或所有者信息的文件。您需要做的就是指定源文件夹和目标文件夹:

Robocopy "D:\test files" "F:\lab"

[玩转系统] RoboCopy - 带有示例的终极指南

复制所有文件和文件夹

要使用 Robocopy 复制所有文件和文件夹,我们需要指定参数 /E。这将从给定目录复制所有文件和文件夹。如果您还想复制所有属性,例如 NTFS 权限或所有者属性,则还要添加 /COPYALL 参数:

Robocopy "D:\test files" "F:\lab" /E /COPYALL

[玩转系统] RoboCopy - 带有示例的终极指南

移动文件

当您需要将文件从一个位置移动到另一个位置时,可以使用 Robocopy 中的 /mov 参数。这会将所有文件(子文件夹)复制到目标位置,并在完成后从源位置删除文件。

就我个人而言,我不太喜欢使用 /mov/move 参数。因为如果复制操作出现任何问题,您也不再拥有源文件。因此,请确保首先使用 /L 参数测试结果。

Robocopy "D:\testfiles" "c:\temp\testfiles" /mov

单独使用 /mov 时,它不会复制文件属性,例如 NTFS 权限。因此您可能还想使用 /COPYALL 参数。

移动文件和文件夹

要移动文件夹,我们可以使用参数 /move,它也应该从目录中移动子文件夹。您需要将其与 /E 参数结合起来以遍历所有子文件夹,否则,仅移动主文件夹的内容。

Robocopy "D:\testfiles" "c:\temp\testfiles" /move /e /copyall

/mov /e 的区别在于,这会将空文件夹留在源目录中,其中 /move /e 还会在复制子文件夹后将其删除。

Robocopy 镜像

当您想要镜像整个目录时,可以使用 Robocopy 镜像参数。镜像将确保目标文件夹与源文件夹完全相同。

值得一提的是,如果您在目标文件夹中添加或删除文件,则该文件不会添加到源中。此镜像仅从源到目的地

笔记

不要使用 Robocopy 镜像作为备份解决方案。如果文件在源中被删除,那么它也会在目标中自动删除。所以这不是一个备份解决方案!
# Mirror files
Robocopy "D:\testfiles\" "c:\temp\testfiles\" /mir

[玩转系统] RoboCopy - 带有示例的终极指南

如果我们查看结果,您将看到Options行。这显示了使用了哪些 Robocopy 开关。如您所见,/E/Purge 已自动添加。这意味着 /MIR 还将镜像所有子目录并清除(删除)目标目录中不再存在于源中的任何文件。

Robocopy 开关

正如一开始提到的,Robocopy 命令附带了许多可以使用的开关。我不会详细解释它们中的每一个,但您将在下面找到可用于 Robocopy 的最常用开关。您可以通过输入 robocopy /? 获取所有信息

复制选项

/S

复制子目录,但不复制空子目录。

/E

复制子目录,包括空子目录。

/LEV:n

只复制源目录树的前 n 个级别。

/Z

以可重新启动模式复制文件。

/B

在备份模式下复制文件。

/ZB

使用可重启模式;如果访问被拒绝,请使用备份模式。

/J

使用无缓冲 I/O 进行复制(建议用于大文件)。

/COPY:copyflag[s]

要复制文件的内容(默认为 /COPY:DAT)。
(复制标志:D=数据、A=属性、T=时间戳、X=跳过替代数据流)。
(S=安全=NTFS ACL ,O=所有者信息,U=审核信息)。

/SEC

使用 SECurity 复制文件(相当于 /COPY:DATS)。

/COPYALL

复制所有文件信息(相当于 /COPY:DATSOU)。

/NOCOPY

不复制文件信息(与 /PURGE 一起使用)。

/SECFIX

修复所有文件(甚至是跳过的文件)的文件安全性。

/TIMFIX

修复所有文件(甚至跳过的文件)上的文件时间。

/PURGE

删除源中不再存在的目标文件/目录。

/MIR

MIRr 目录树(相当于 /E 加 /PURGE)。

/MOV

MOVe 文件(复制后从源中删除)。

/MOVE

移动文件和目录(复制后从源中删除)。

/A+:[RASHCNET]

将给定属性添加到复制的文件中。

/A-:[RASHCNET]

从复制的文件中删除给定的属性。

/CREATE

仅创建目录树和零长度文件。

/MON:n

监控源;当看到超过 n 个更改时再次运行。

/MOT:m

监控信号源;如果发生变化,请在 m 分钟后再次运行。

/RH:hhmm-hhmm

运行时间 - 可以启动新副本的时间。

/MT[:n]

使用 n 个线程(默认 8)进行多线程复制。 n 必须至少为 1 并且不大于 128。
此选项与 /IPG 和 /EFSRAW 选项不兼容。
使用 /LOG 选项重定向输出以获得更好的性能。

/DCOPY:copyflag[s]

目录要复制的内容(默认为 /DCOPY:DA)。
(复制标志:D=数据、A=属性、T=时间戳、E=EA、X=跳过替代数据流)。

/NODCOPY

复制无目录信息(默认情况下 /DCOPY:DA 已完成)。

/NOOFFLOAD

复制文件而不使用 Windows 复制卸载机制。

/COMPRESS

在文件传输期间请求网络压缩(如果适用)。

文件选择选项

/A

仅复制设置了存档属性的文件。

/M

仅复制具有存档属性的文件并重置它。

/IA:[RASHCNETO]

仅包含具有任何给定属性集的文件。
R - 只读
A - 存档
S -系统
H - 隐藏
C - 压缩
N - 内容未编入索引
E- 加密brstrongT/strong - 临时/p/dddtbstrong/XA:[RASHCNETO]/strong/b/dtddp排除具有任何给定属性集的文件。/p/dddtbstrong/XF file [file]…/strong/b/dtddp排除与给定名称/路径/通配符匹配的文件。/p/dddtbstrong/XD dirs [dirs]…/strong/b/dtddp排除与给定名称/路径匹配的目录。/p/dddtbstrong/XC/strong/b/dtddp排除已更改的文件。/p/dddtbstrong/XN/strong/b/dtddp排除较新的文件。/p/dddtbstrong/XO/strong/b/dtddp排除较旧的文件。/p/dddtbstrong/XX/strong/b/dtddp排除额外的文件和目录。/p/dddtbstrong/XL/strong/b/dtddp排除孤独的文件和目录。/p/dddtbstrong/MAX:n/strong/b/dtddp最大文件大小 - 排除大于 n 字节的文件。/p/dddtbstrong/MIN:n/strong/b/dtddp最小文件大小 - 排除小于 n 字节的文件。/p/dddtbstrong/MAXAGE:n/strong/b/dtddp最大文件期限 - 排除早于 n 天/日期的文件。/p/dddtbstrong/MINAGE:n/strong/b/dtddp最小文件期限 - 排除晚于 n 天/日期的文件。/p/dddtbstrong/MAXLAD:n/strong/b/dtddp最大上次访问日期 - 排除自 n 以来未使用的文件。/p/dddtbstrong/MINLAD:n/strong/b/dtddp最短上次访问日期 - 排除自 n 以来使用的文件。br(如果 n 0.31 秒

  • 128 个线程 > 0.48 秒

  • 上面的数字仅供您参考。当您需要复制大量数据时,最好对您的环境的最佳数量进行一些测试。

    Robocopy 日志

    默认情况下,Robocopy 直接将日志输出到控制台。非常适合小型复制作业,但在传输大量文件时,您可能希望将结果保存到日志中。使用日志文件的另一个好处是 Robocopy 会更快。

    /LOG:<path>

    指定保存信息的日志文件

    /LOG+:

    将结果附加到现有日志文件

    /ts

    在日志输出中包含源文件时间戳

    /tee

    输出到日志和控制台

    /fp

    在日志中包含文件的完整路径

    /v

    详细,输出还跳过文件

    甚至可以确定要记录或不记录的内容,例如不记录目录。您可以在文档中找到所有选项。

    当您在无人值守的情况下运行 Robocopy 时,强烈建议使用日志文件。即使控制台关闭,它也使您能够在事后检查是否有任何错误。在传输大量数据时使用日志文件也是一个好主意。通过这种方式,您可以轻松检查已发生的任何复制问题。

    确保您还指定了文件名,而不仅仅是日志文件位置。

    robocopy d:\testfiles \la-srv-lab02\temp$\dst /copyall /e /log:c:\temp\dst.log /zb /r:3 /w:1

    常见问题解答

    使用参数 /COPYALL/COPY:U 时,您需要以管理员身份运行命令提示符(或 Windows 终端)。

    为了加快复制过程,最好将输出重定向到日志文件。将其输出到控制台会减慢复制过程。此外,如果您有稳定可靠的网络连接,那么您可以省略 /z (可重新启动模式)开关。使用 /mt:16 将线程增加到 16,设置得太高可能会导致出现延迟。

    总结

    当您需要复制大量数据时,Robocopy 是最好的工具之一。正如您所看到的,它提供了很多选项来帮助您以最有效的方式复制数据。处理大型数据集时,请确保在对生产数据运行命令之前使用 /L 开关测试命令。

    我希望这篇文章对您有用,如果您有任何疑问,请在下面发表评论。

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯