我使用的是 Windows 7,我喜欢将目录从一个驱动器复制到另一个驱动器。我希望它尽可能快,我需要的是
- 修改日期
- 普通文件(没有权限等属性,也不属于档案)
- 资源子目录
- 如果文件存在则检查修改日期和文件大小是否匹配,如果不匹配则覆盖(例如在部分/中止传输的情况下)
我需要什么标志?我最终使用了robocopy /S /R:3 src dst
。它可能比我需要的还多?
答案1
Robocopy 默认会跳过目标中已存在的所有文件(如果它们的大小和时间戳相同)。目标中已存在的文件(如果其属性与源不同,但其他方面相同)将被忽略(默认情况下)。
Robocopy 文档的一些摘录:
默认情况下,除非使用 /XL 开关,否则始终会复制单独的文件(和目录)。已更改、较新和较旧的文件将被视为复制的候选文件(受下文所述进一步过滤),相同的文件将被跳过(不复制),而额外的和不匹配的文件(和目录)将仅在输出日志中报告。
通常情况下,Tweaked 文件不会被识别或复制 - 它们通常默认被识别为 Same 文件。只有使用开关 /IT 时才会区分 Same 文件和 Tweaked 文件,然后才会复制 Tweaked 文件。
在复制操作期间,Robocopy 会在目标文件上放置一个 1980 年 1 月的时间戳,并且仅在复制完成时将其更新为源文件的时间戳。如果在复制操作期间退出 Robocopy,则任何未完全复制的目标文件都将具有比其对应的源文件更早的时间戳。如果重新启动相同的复制操作,Robocopy 会将此文件视为较新的文件,因此将完成中断的复制,除非您指定了 /XN。
孤独文件是仅存在于源上的文件(通常这些文件总是被复制)。已更改意味着文件大小不同。较新和较旧表示时间戳不匹配。相同的表示文件大小、时间戳和属性匹配。额外的表示仅存在于目标中的文件。并且不匹配表示源或目标中存在的文件与同名文件夹冲突。
因此,Robocopy 的典型用法是:
robocopy "C:\source\path" "D:\dest\path" /E /COPY:DT /DCOPY:T /XJ
应该做你想做的事。
- 修改日期用于确定较新文件。
/COPY:DT
不会更改目标中已存在的相同文件的属性,但新的(孤独) 文件连同其属性一起被复制。/S
或者/E
将递归子目录- 部分/中止的转会将恢复
一些可用的选项:
/S also copy subdirs of source to destination (do not copy empty subdirs)
/E also copy subdirs of source to destination (include empty subdirs)
/COPY:DT copy D(ata) and T(imestamps) for copied files
/COPY:DAT copy D(ata) A(ttributes) and T(imestamps) for copied files (default).
[Note: If file Data is copied, then file Timestamps are also copied.]
[other /COPY: options are available]
/DCOPY:T copy T(imestamps) for copied folders
/XJ exclude copying of "Junction-Points"
/ETA show estimated time remaining while copying which may or may not be helpful
/L do not actualy copy anything, only show files that "would" be copied
[useful to "test" your Robocopy command line before actually copying files]
(Many more options are available for Robocopy operation)
有关 Robocopy 选项的更多信息,请参阅我撰写的有关 Robocopy 的另一篇文章:https://superuser.com/a/566054/144147,其中包括更多文档的外部链接。