我想覆盖目标中的旧文件,但是不是删除仅存在于目标中的文件。
从https://ss64.com/nt/robocopy.html我明白这/XO
可能会做到这一点,但我也明白可以从目标中删除文件(如果它们在源中没有对应文件)。第二种行为(我想避免)究竟何时发生?
答案1
当您使用以下两个选项之一时:
- /清除:删除源中不再存在的目标文件/文件夹。
- /和平号空间站:MIRror 目录树 - 相当于 /PURGE 加上所有子文件夹 (/E)
例子:
- 机器人复制/清除c:\源 d:\目标
- 机器人复制/和平号空间站c:\源 d:\目标
然后,如果源文件中不存在文件,您将删除目标文件中的文件。
Robocopy 也将默认“默认情况下,仅当源和目标具有不同的时间戳或不同的文件大小时,Robocopy 才会复制文件。”
我还建议您研究一下:
- /复制:copyflag[s]:要复制什么(默认为/COPY:DAT)(copyflags:D=数据、A=属性、T=时间戳、S=安全性=NTFS ACL、O=所有者信息、U=审核信息)。
例子:
- 机器人复制/复制:DATc:\源 d:\目标
这将确保您获得所复制文件的相同时间戳。
答案2
如果您使用 /PURGE 并且选项中还有 /XX,则 PURGE 将不会删除文件或文件夹,因为 /XX 会使 Robocopy 忽略它们。从选项中删除 /XX,Purge 将起作用,并且每个已删除的文件都将在日志中显示为 *EXTRA 文件。目录将显示为 *EXTRA Dir。Extras 将从目标地址中删除