1

我有一些 SQL 日志备份计划每 15 分钟运行一次,包括使用 /MIR 选项的 robocopy,使用 CloudBerry 到云存储卷上的存档文件夹。

有时在完全备份后,网络慢,在运行日志备份时,完全备份存档复制还没有完成,我怀疑第二个 robocopy 现在除了尝试复制大的完整备份文件外,还尝试复制大的完整备份文件。新的日志备份。

应该发生什么?如果重试标志设置为 /R:60,第二个实例是否应该以某种方式跳过已被另一个 robocopy 实例复制的文件,或者 robocopy 的两个实例是否会相互重叠?还是必须在设置 /R:0 选项的情况下运行第二个实例以跳过仍在复制的第一个文件?

4

2 回答 2

0

虽然这是一个相当古老的问题,但我还没有找到正确的答案,并且发现它仍然相关,所以这是我的发现:

我进行了几次测试,似乎 RoboCopy 拍摄了源目录和目标目录的快照,并比较了需要从快照点复制哪些文件。

这意味着如果一个 RoboCopy 实例一个接一个地启动,这两个实例将不断发生冲突并相互覆盖,因为这两个实例都不知道目标目录中正在发生更改。

如果一个实例(实例 A)试图复制另一个实例(实例 B)正在复制的同一文件,它将出错并重试(如果使用 /R)或跳到下一个(如果使用 /R:0)。一旦实例 B 完成了文件,它将尝试复制列表中的下一个文件,这将出错(如果实例 A 仍在复制它)或覆盖文件(如果实例 A 已经移动到下一个文件) .

因此,在问题的情况下,最可能的行为(假设网络速度和文件大小保持一致)是 RoboCopy 的新实例将覆盖列表开头的备份文件,而原始实例仍在复制最后一个列表中的文件。

于 2020-06-16T16:31:59.503 回答
0

我知道这个答案有点晚了,我希望你找到了解决方案,但这是我的 2 美分:

Robocopy 有一个“监控源”以进行更改的选项,我认为是 /MON 和 /MOT 选项。这将阻止 robocopy 重新运行——它总是在本质上是热文件夹类型的场景中运行。

在 robocopy 的帮助下:

         /MON:n :: MONitor source; run again when more than n changes seen.
         /MOT:m :: MOnitor source; run again in m minutes Time, if changed.
于 2016-08-30T12:27:40.253 回答