通常,Robocopy会忽略lastwrittendate和文件大小相同的文件。我们怎样才能摆脱这种设计?我想用Robocopy强制覆盖。
我希望dst\sample.txt应该被写成test001。但是这些文件被Robocopy识别为相同的文件,并且不会被覆盖。在这种情况下,"/IS“选项无效。
New-Item src -itemType Directory
New-Item dst -itemType Directory
New-Item src\sample.txt -itemType File -Value "test001"
New-Item dst\sample.txt -itemType File -Value "test002"
Set-ItemProperty src\sample.txt -Name LastWriteTime -Value "2016/1/1 15:00:00"
Set-ItemProperty dst\sample.txt -Name LastWriteTime -Value "2016/1/1 15:00:00"
ROBOCOPY.exe src dst /COPYALL /MIR
Get-Content src\sample.txt, dst\sample.txt
> test001
> test002
ROBOCOPY.exe src dst /COPYALL /MIR /IS
Get-Content src\sample.txt, dst\sample.txt
> test001
> test002
发布于 2020-08-21 15:44:01
这真的很奇怪,为什么没有人提到/IM开关?!我已经在备份作业中使用它很长一段时间了。但是我刚才试着用谷歌搜索,我甚至在MS website上都找不到任何关于它的网页!我也发现很多用户都在抱怨同样的问题!
不管怎样..。要使用Robocopy覆盖源或目标中的所有内容,无论大小或时间如何,您必须在命令中包含以下三个开关(/IS、/IT、/IM)
/IS :: Include Same files. (Includes same size files)
/IT :: Include Tweaked files. (Includes same files with different Attributes)
/IM :: Include Modified files (Includes same files with different times).
这正是我用来传输几个TeraBytes文件(主要是1GB+文件)的命令(ISOs磁盘映像- 4K视频):
robocopy B:\Source D:\Destination /E /J /COPYALL /MT:1 /DCOPY:DATE /IS /IT /IM /X /V /NP /LOG:A:\ROBOCOPY.LOG
我为你做了一个小测试..结果如下:
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1028 1028 0 0 0 169
Files : 8053 8053 0 0 0 1
Bytes : 649.666 g 649.666 g 0 0 0 1.707 g
Times : 2:46:53 0:41:43 0:00:00 0:41:44
Speed : 278653398 Bytes/sec.
Speed : 15944.675 MegaBytes/min.
Ended : Friday, August 21, 2020 7:34:33 AM
Dest,Disk:WD Gold 6TB (将写入速度与我的结果进行比较)
即使有了这些“额外的”,那也只是为了报告,因为"/X“开关。正如您所看到的,没有任何内容被跳过,所有文件的总数和大小都等于复制的文件。有时,当我滥用它并在操作过程中多次取消它时,它会显示少量跳过的文件,但即使这样,前两列中的值始终是相等的。我之前还通过运行一个PowerShell脚本确认了这一点,该脚本扫描目标中的所有文件并生成所有时间戳的报告。
从我使用它的历史和如此多的测试和麻烦中一些性能技巧!:
。尽管大多数在线用户建议使用最大线程"/MT:128“,就像获得最佳性能的一般技巧一样... 请不要在非常大的文件中使用"/MT:128”...这是一个很大的错误,它会在几次运行后显著降低您的驱动器性能。它将创建非常高的碎片,甚至在某些情况下导致文件系统失败,您最终会花费宝贵的时间来尝试恢复原始分区和所有这些废话。最重要的是,它的执行速度会慢4-6倍!
用于超大型文件的:
影响仅使用"One“线程"/MT:1”|:
常规大文件的:
高速缓存使用多线程,我不会超过“
数以千计的小文件的:
发布于 2018-02-21 05:28:41
我这样做是为了一个主文件夹,其中所有文件夹都在相应用户的桌面上,可以通过没有适当权限的快捷方式访问,因此即使它在那里,用户也看不到它。因此,我使用带有参数的Robocopy来覆盖具有正确设置的文件:
FOR /F "tokens=*" %G IN ('dir /b') DO robocopy "\\server02\Folder with shortcut" "\\server02\home\%G\Desktop" /S /A /V /log+:C:\RobocopyShortcut.txt /XF *.url *.mp3 *.hta *.htm *.mht *.js *.IE5 *.css *.temp *.html *.svg *.ocx *.3gp *.opus *.zzzzz *.avi *.bin *.cab *.mp4 *.mov *.mkv *.flv *.tiff *.tif *.asf *.webm *.exe *.dll *.dl_ *.oc_ *.ex_ *.sy_ *.sys *.msi *.inf *.ini *.bmp *.png *.gif *.jpeg *.jpg *.mpg *.db *.wav *.wma *.wmv *.mpeg *.tmp *.old *.vbs *.log *.bat *.cmd *.zip /SEC /IT /ZB /R:0
正如你所看到的,有许多我设置为忽略的文件类型(只是为了以防万一),只是根据你的需要或你的案例场景来设置它们。
它在Windows Server 2012上进行了测试,每个交换机都记录在Microsoft的网站和其他网站上。
https://stackoverflow.com/questions/40744335
复制相似问题