运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]

Posted

技术标签:

【中文标题】运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]【英文标题】:run robocopy bat to copy entire drive to another drive [closed] 【发布时间】:2014-06-11 16:40:58 【问题描述】:

我正在尝试将整个驱动器 (d:) 的简单备份(镜像)运行到另一个驱动器 (k:)。我创建了一个定义源 (d:) 和目标 (k:) 的 .bat 文件 ('backup.bat'),并将此批处理文件放在 d 驱动器 (d:\temp) 上的文件夹中。当我双击批处理文件时,它将源定义为 d:\temp,而不是我在批处理文件中定义的源;丁:。

这是 .bat 文件中的文本:

@echo off
echo To begin backing up data:
pause
robocopy "D:" "K:" /L /v                 
echo.
pause
exit

这就是我双击 backup.bat 时显示的内容

如您所见,源定义为 d:\temp。这是批处理文件所在的位置,但在批处理文件中我将其定义为 D:。由于某种原因,目的地定义正确。

有什么想法吗?

-al

编辑:如果我将“/”添加到源和目标位置,请参见下面的代码,我会看到更奇怪的行为(参见屏幕截图)。源现在是定义的源和目标的组合,没有目标。

@echo off

echo To begin backing up data:
pause

robocopy "D:\" "K:\" /L /v


echo.            
pause
exit

而且,如果我从源和目标中删除“”......它可以工作!

@echo off

echo To begin backing up data:
pause

robocopy D:\ K:\ /L /v
echo.            
pause
exit

【问题讨论】:

【参考方案1】:

使用"D:",您不是指定 D 盘 (D:\) 的 root 目录,而是指定 D 的 当前 目录相反,(在您的示例中为D:\temp)。

要解决这个问题,只需将\ 添加到源规范(同时添加到目标规范)

robocopy d:\ k:\ /L /v                 

【讨论】:

我已经尝试过了,它会产生更奇怪的东西。请参阅上面的编辑。 @PA。是正确的,我不仅需要添加\,还需要删除引号。感谢您的帮助。【参考方案2】:

使用/E 选项。 还可以通过/? 检查其他必要/有用的参数,例如/copyall /ZB/DCOPY:DAT

【讨论】:

【参考方案3】:

/L 选项试运行,实际上没有复制任何内容。

来自 MS 网站: /l 指定仅列出文件(而不是复制、删除或时间戳)。

这是我在复制和整个磁盘之前的试运行示例:

      Total    Copied   Skipped  Mismatch    FAILED    Extras                                                                                                                                                                                                             Dirs :     63346     63346         2         0         0         0                                                                                                                                                                                                            Files :    719564    719564         0         0         0         0                                                                                                                                                                                                            Bytes :   4.039 t   4.039 t         0         0         0         0                                                                                                                                                                                                            Times :   0:27:58   0:00:00                       0:00:00   0:27:57                                                                                                                                                                                                            Ended : Monday, September 6, 2021 9:25:35 AM  

这是我的记事本,用于制作我的命令,(注意我只是删除 /L 以实际复制):

用于测试(试运行): robocopy Q: G: /L /E /COPYALL /R:20 /W:15 /MT /NP /A-:SH /Z /V /TEE /LOG+:VMRobCp.log

实际运行: robocopy Q: G: /E /COPYALL /R:20 /W:15 /MT /NP /A-:SH /Z /V /TEE /LOG+:VMRobCp.log

【讨论】:

【参考方案4】:

我发现当您将路径放在源和/或目标的引号中时,最后一个斜杠后需要一个空格。如果您有嵌入的空格,则需要引号,因此您需要路径中最后一个斜杠后的空格,例如“c:\” 不是“c:\”

无法真正告诉您 robocopy 发生了什么,但我所有的备份脚本都考虑到了这一点。

祝你好运!

【讨论】:

Fwiw,我想起了在引号内使用结尾斜杠后的空格的原因。似乎如果您省略空格,robocopy 不会看到有以斜杠结尾的路径,因此假定您输入了文件名。 为什么不直接使用 /MIR?

以上是关于运行 robocopy bat 将整个驱动器复制到另一个驱动器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如果通过计划任务调用 BAT 文件,则无法将文件复制到 UNC 目标

对 robocopy 的工作方式感到困惑

用于将文件复制到 50 多台远程计算机的 Robocopy 命令

使用 robocopy 复制今天创建或修改的文件

即使 ROBOCOPY 命令在 BAT 脚本中成功执行,JENKINS 作业也会失败

关于copy,xcopy,robocopy三者都是复制,但作用是啥,不太清楚?