这是我的 robocopy 行:
robocopy "\\network\Document\Migration" D:\Migration /S
正如所描述的这里robocopy 应该跳过具有相同大小、日期和名称的文件。
首先从网络复制到本地文件夹
当我第一次执行 robocopy 行时,我的所有测试文件都被复制,结果如下:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : 25 July 2022 13:47:35
Source = \\network\Document\Migration\
Dest : d:\Migration\
Files : *.*
Options : *.* /S /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
New Dir 3 \\network\Document\Migration\
New File 0 file 1.txt
New File 0 file 2.txt
New File 0 File 3.docx
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 1 0 0 0 0
Files : 3 3 0 0 0 0
Bytes : 0 0 0 0 0 0
Times : 0:00:00 0:00:00 0:00:00 0:00:00
第二次从网络复制到本地文件夹
现在,如果我再次执行完全相同的命令而不触碰文件,应该会跳过这 3 个文件,对吗?但事实并非如此。所有内容都再次被复制,并显示“*EXTRA 文件”(这次仅显示相关信息):
------------------------------------------------------------------------------
3 \\network\Document\Migration\
*EXTRA File 0 file 1.txt
*EXTRA File 0 file 2.txt
*EXTRA File 0 File 3.docx
New File 0 file 1.txt
New File 0 file 2.txt
New File 0 File 3.docx
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
Files : 3 3 0 0 0 3
Bytes : 0 0 0 0 0 0
首先从本地文件夹复制到其他本地文件夹
在写这个问题之前,我在 2 个本地文件夹上测试了该命令,其中 3 个测试文件被复制到前一个目标文件夹作为源路径和新的目标路径:
------------------------------------------------------------------------------
New Dir 3 d:\Migration\
New File 0 file 1.txt
New File 0 file 2.txt
New File 0 File 3.docx
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 1 0 0 0 0
Files : 3 3 0 0 0 0
Bytes : 0 0 0 0 0 0
3 个文件已按预期复制。
从本地到本地的第二次复制
第二次执行此脚本时,完整结果如下:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : 25 July 2022 14:49:13
Source : d:\Migration\
Dest : d:\Migration2\
Files : *.*
Options : *.* /S /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
3 d:\Migration\
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
Files : 3 0 3 0 0 0
Bytes : 0 0 0 0 0 0
Times : 0:00:00 0:00:00 0:00:00 0:00:00
Ended : 25 July 2022 14:49:13
正如预期的那样,所有 3 个文件都被跳过了。为什么当我从网络文件夹复制它们时没有被跳过?
编辑文件比较和/FFT
根据@Paul的建议,我添加了/FFT
开关,但它们仍然被识别并复制为*EXTRA File
。
结果如下:
Options : *.* /FFT /V /S /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
3 \\network\Document\Migration\
*EXTRA File 0 file 1.txt
*EXTRA File 0 file 2.txt
*EXTRA File 0 File 3.docx
New File 0 file 1.txt
New File 0 file 2.txt
New File 0 File 3.docx
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
Files : 3 3 0 0 0 3
Bytes : 0 0 0 0 0 0
Times : 0:00:00 0:00:00 0:00:00 0:00:00
文件比较
使用 fc 我比较了文件内容,但所有 3 个文件都“未发现任何差异”
C:\Users\username>fc "\\network\Document\Migration\file 1.txt" "d:\migration\file 1.txt"
Comparing files \\NETWORK\DOCUMENT\MIGRATION\FILE 1.TXT and D:\MIGRATION\FILE 1.TXT
FC: no differences encountered
并使用 robocopy(来自这里)我只显示了文件元数据和名称:
robocopy "\\network\Document\Migration" d:\migration /l /ts /nc /ndl /njh /njs /FFT
0 2022/07/25 11:31:55 d:\migration\file 1.txt
0 2022/07/25 11:32:06 d:\migration\file 2.txt
0 2022/07/25 11:32:18 d:\migration\File 3.docx
0 2022/07/25 11:31:55 \\network\Document\Migration\file 1.txt
0 2022/07/25 11:32:06 \\network\Document\Migration\file 2.txt
0 2022/07/25 11:32:18 \\network\Document\Migration\File 3.docx
我找不到区别!(时间比我的 Windows 资源管理器上显示的时间少 2 小时,但这是一致的,所以我认为这不是一个相关的细节)。robocopy 显然认为它们是不同的,我不知道如何找出区别,也不知道为什么它会认为它们不相似。
当我在两个本地文件夹上执行相同的命令时,robocopy d:\migration d:\migration2 /l /ts /nc /ndl /njh /njs
没有结果出现,这很好,因为没有代表/is
“包含相同的文件。“。即使没有/is
,它也会在网络/本地文件夹命令上显示所有文件信息。它们对于 robocopy 不一样......但为什么呢?
编辑-/mir
最后
因此,按照建议,我执行了以下命令,以/is
确保只显示要复制的文件而不是全部文件。
robocopy "\\network\Document\Migration" d:\migration /l /ts /nc /ndl /njh /njs /FFT /mir
结果如下:
0 2022/07/25 11:31:55 d:\migration\file 1.txt
0 2022/07/25 11:32:06 d:\migration\file 2.txt
0 2022/07/25 11:32:18 d:\migration\File 3.docx
0 2022/07/25 11:31:55 \\network\Document\Migration\file 1.txt
0 2022/07/25 11:32:06 \\network\Document\Migration\file 2.txt
0 2022/07/25 11:32:18 \\network\Document\Migration\File 3.docx
/fft
它与没有或完全相同/mir
。
答案1
这可能是由于两个系统之间的时间戳不一致造成的。您可以尝试添加 /FFT 标志,这会使 Robocopy 更具容忍度(它使用两秒的分辨率)。此外,您还可以添加 /V(详细)标志以获取有关正在发生的事情的更多信息。