我有两个硬盘:
G:是连接到 Windows 10 PC 的外部 USB 驱动器 H:是网络驱动器(连接到家庭网络路由器 USB 端口的另一个 USB 驱动器)
我已将所有文件和子文件夹从 G:/my_data_folder 复制到 H:/my_data_folder。目前,H:/my_data_folder 是 G:/my_data_folder 的精确副本。
现在我想创建一个 Robocopy 命令,可以在 Win10 PC 上定期运行,从 G: 复制到 H:
- G:/my_data_folder 中任何在 H:/my_data_folder 中不存在的文件/文件夹
- G:/my_data_folder 中的任何文件,如果已存在于 H:/my_data_folder 中,但版本较新(即最近保存)。此新复制的文件将覆盖 H: 上的旧文件。
我对 Robocopy 的理解是,不复制同一日期/时间的现有文件是默认行为,因此我不需要明确排除它们。
我不希望 H:/my_data_folder 镜像 G:/my_data_folder。也就是说,永远不要从 H:/my_data_folder 删除任何内容,即使它现在不在 G:/my_data_folder 中。
我不需要日志文件,但我想在屏幕上看到它做了什么。
以下是我尝试编写适当的 robocopy 命令:
robocopy g:/my_data_folder h:/my_data_folder /e /np /fft /mt:8 /z /r:5 /w:5
在哪里:
- /e = 复制甚至空目录
- /np = 没有文件复制进度 - 不需要它
- /fft = 如果由于网络驱动器导致任何日期/时间错误
- /mt:8 = 使用 8 个并发线程来加快速度
- /z = 可重启模式,以便可以从中断的传输中恢复
- /r:5 = 尝试最多 5 次重启
- /w:5 = 每次重启之间等待 5 秒
这能达到我想要的效果吗?我是否错过了完成这项任务的任何关键开关?
谢谢。
答案1
你的脚本本身就已经很完美了。
只是为了解决/XX
harrymc 的回答中提出的稍微令人困惑的“以防万一使用”论点:
“为了避免目标文件夹中的内容被删除,我建议添加开关/XX
。这应该是默认设置,但是为了以防万一,我还是会明确添加它。“
我建议不要“以防万一”而添加冗余开关。这种/XX
开关在您的情况下不会起任何作用,只会造成混乱。
这页另一个答案中引用清楚地解释了该开关的用途:
“ /XX
(不包括额外费用)如果与 /Purge 或 /Mir 结合使用,排除额外开关将优先并阻止从目标中删除任何文件。”
由于您的脚本没有/MIR
也没有/PURGE
开关,我们可以 100% 肯定地说添加/XX
“以防万一”是多余的。
我已经使用 Robocopy 多年,并且已经传输了数 TB 的数据,而从未使用过开关/XX
。Robocopy 从未删除过任何“额外”文件。
进一步澄清可见这里。
只是想澄清一下!
答案2
为了避免目标文件夹中的内容被删除,我建议添加开关/xx
。这应该是默认设置,但是为了以防万一,我还是会明确添加它。
/xx Excludes extra files and directories.
此开关进一步描述作为:
/XX : eXclude "eXtra" files and dirs (present in destination but not source)
This will prevent any deletions from the destination. (this is the default)