尝试学习 Robocopy 以获得基本备份计划,我在 bat 文件中尝试了这个:
@echo off
echo "Hello World!"
robocopy C:\Testfolder Z:\Testfolder
pause
其中 Z: 是网络驱动器(连接到路由器 USB 端口的 USB 外部驱动器)
C:\Testfolder 中只有两个文件 - 02.jpg 和 02-03.jpg。
我第一次运行它时,它在 Z: 上创建了 Testfolder 并将两个图像复制过来。
好奇会发生什么,我再次运行它 - 这一次,屏幕上的消息说它复制了 02.jpg,但跳过了 02-03.jpg。再次重新运行同样的事情。
为什么会这样?
默认情况下,robocopy 仅复制自上次运行以来它认为已更改的文件。您可以通过查看副本末尾的状态来确认这一点。它应该说 Files Skipped 是 1。您可能需要包含该
/v
选项以获得更好的详细信息。因为您要复制到连接到路由器的基于网络的驱动器,所以很可能存在文件时间错误,它会导致 robocopy 在其中一个目标文件上看到不同的日期和时间。文件属性问题在基于 Linux 的 samba 共享中很常见,例如您的路由器最有可能使用的文件。这可以解释为什么如果文件没有更改,它会一直重新复制一个文件。您可以尝试该
/timfix
参数以查看它是否会更正文件上的时间并停止重新复制未更改的文件。如果希望 robocopy 复制相同且未更改的文件,请添加该
/is
选项。此处提供更多信息:https ://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy