我有以下 xcopy 命令来仅备份 Windows Server 2008 框中的新文件:
XCOPY /D /Y C:\TMP\*.dat C:\Test
第一次将所有文件复制到测试中运行良好,随后不再复制任何内容,因为 C:\TMP 中没有任何文件发生更改。
但是,我尝试将相同的命令应用于网络驱动器(从 LINUX 导出到 Windows 的驱动器,连接为 CIFS),无论源文件是否更改,XCOPY 都会复制所有文件。类似的命令如下:
XCOPY /D /Y C:\TMP\*.dat Z:\Test
我通过日期时间和属性页验证了 C:\test 和 Z:\Test 中的文件。所有文件的创建日期、修改日期和访问日期都相同。
我使用 XCOPY 的目的是对文件进行增量备份。我也尝试使用 ROBOCopy(Windows 工具包中的一个工具),结果相同:在本地驱动器上按预期工作,但在网络驱动器上则不行。
我喜欢 XCOPY 的另一个原因是,即使源文件被其他进程持有,它也会将源文件复制到新文件。我尝试了 Microsoft SyncToy,但在这种情况下它不起作用。根据 ROBOCopy 的文档,它似乎对被进程持有的文件也不起作用。
如果网络驱动器是另一个 Windows 机器上的网络驱动器,则 XCOPY 可以正常工作。看来 XCOPY 不适用于从 UNIX 系统导入的驱动器。不确定为什么,或者我是否错过了其他选项?或者还有其他可用的选项或工具?
答案1
我怀疑差异在于 Samba 报告的日期解析度与文件系统中存储的日期解析度不同。可能是 Samba 报告的日期以微秒为零,而文件系统存储的是微秒,xcopy/robocopy 关心的是这一点。如果不打开嗅探器,我无法证明这一点,但这只是猜测。
答案2
Sambamap archive
和create mask
选项控制是否存储存档位。它们可能因安全原因而被禁用。