Robocopy中的备份模式是什么


19

我正在尝试通过网络复制大型数据库备份文件。

传统程序复制或xcopy失败,并导致使用不同的二进制文件。还尝试了robocopy不带参数的操作,并导致失败。只是robocopy使用/zb参数(重新启动和备份模式)进行了另一次尝试。它花费了更长的时间,但取得了成功。

我的问题是,备份模式是否真的旨在复制大文件/备份文件?通过网络搜索,找不到清晰的答案。如果有经验的用户可以给我一个提示或更好的解决方案,将不胜感激。


xcopy和robocopy实际将数据从A复制到B的方式之间几乎没有什么区别,因此在xcopy上使用robocopy不会减少意外数据损坏的机会。这意味着在使用xcopy之后,您获得了另一个二进制文件,这很可能是因为在复制数据库时对其进行了修改。“ / Z”标志在这里无关紧要(它仅控制robocopy是否跳过文件的现有部分),“ / B”标志也基本上控制打开源文件时应用程序请求的权限。
埃斯特罗姆,2015年

@Angstrom感谢您的回复。二进制差异不是来自变化的数据库,因为它是一个静态备份文件(已经从数据库分离)。没错,我相信/ ZB不会为更健壮的复制而故意做任何事情,但是可重启标志似乎使二进制写入更加准确(这是因为它花费了更长的时间并导致了相同的复制)。也可能是由于可重启性使得重写丢失的数据成为可能。
ydoow's

Answers:


12

备份模式是一种读写文件而忽略任何权限问题的方法。

它使用SeBackupPrivilege(读取)和SeRestorePrivilege(写入)来读取/写入任何文件和所有文件,而忽略任何会阻止您读取或写入文件的ACE。

通常,在尝试复制或访问文件时,Windows会执行检查以确保您具有读取或写入位置的权限,但具有SeBackupPrivilege(授予“备份操作员和管理员”组)和SeRestorePrivilege(还授予“备份操作员和管理员”组),则将忽略这些检查。

要检查您的帐户是否具有这些特权,可以whoami /priv在命令提示符处运行命令。


只有可以真正回答问题的答案,谢谢。提供的信息来源将使其变得完美。
Hashim

2

只想分享有关解决上述问题的更新。

就我而言,xcopy无法在不同域和服务器位置的服务器之间复制超过10GB的文件。

在另一边,robocopy

/zb- 使用重启模式。如果访问被拒绝,则此选项使用备份模式。

可以成功复制。但是,时间从1小时增加到2.5小时。

-

重新排列服务器后,现在将文件复制到同一域和相同位置的服务器之间。而且使用xcopy也可以。

-

因此,我的理论可能是关于服务器之间的稳定性连接。如果连接不牢固(有时会掉线而导致访问问题),则在像我这样的情况下复制大文件时,在漫长的过程中随时可能会损坏;robocopy重启和备份可以恢复副本相当不错。恢复所花费的时间可能是不利的。

另外请注意,如果这将成为日常任务,则应使用FTP而不是副本


2

我强烈建议您创建一个快照并备份现在已停顿的文件系统。然后,您可以使用/ J(大型文件的无缓冲I / O)快速运行robocopy。这是一个用于创建C:的影子副本的脚本,它称为P:。该驱动器(P :)是C:驱动器的静态映像,非常适合备份。我们使用此技术将活动的虚拟机磁盘映像复制到备份驱动器。

以下使用四个脚本文件:

  • 批处理文件以将其踢出磁盘阴影命令
  • 磁盘影子命令以销毁任何 悬垂的乍得 如果内部批处理文件崩溃,则前一个阴影
  • 一系列磁盘阴影命令,将阴影创建为P:
  • 阴影处于活动状态时要执行的一系列命令(P:处于活动状态时执行的内部批处理文件)

1)批处理文件开始处理

diskshadow -s cleanup.cmds
diskshadow -s diskshadow.cmds

2)影子命令文件“ cleanup.cmds”销毁先前活动的影子

UNEXPOSE P:

3)影子命令文件“ diskshadow.cmds”会生成影子,然后调用第四个文件

SET CONTEXT PERSISTENT NOWRITERS
SET METADATA example.cab
SET VERBOSE ON
BEGIN BACKUP
ADD VOLUME C: ALIAS systemVolumeShadow
CREATE
EXPORT %systemVolumeShadow% P:
EXEC c:\yourlocation\backup.cmd
UNEXPOSE P:
END BACKUP
RESET

4)命令文件“ backup.cmd”在影子上运行

REM do the ROBOCOPY commands here, with the source being P:, the shadow of C:

请注意,Windows Server 2016(以及可能的其他版本)在一周中每天两次运行卷影副本,这将导致在下面创建的卷影副本崩溃。确保此备份技术不会与这些自动计划的影子命令重叠。


0

为了扩展@erict的答案,以下是使用PowerShell创建和销毁快照的方法:

$Drive = "D:\"
$Folder = $Drive + "ShadowCopy"

# Create the snapshot
$Snapshot = (gwmi -List Win32_ShadowCopy).Create($Drive, "ClientAccessible")
$Shadow = gwmi Win32_ShadowCopy | ? { $_.ID -eq $Snapshot.ShadowID }
$Volume = $Shadow.DeviceObject + "\"
cmd /c mklink /d "$Folder" "$Volume"

# Destroy the snapshot
cmd /c rd "$Folder"
$Shadow.Delete()

也可以通过使用PowerShell remoting在远程计算机上运行:

Enter-PSSession RemoteComputer

#
# Run snapshot commands here
#

Exit-PSSession
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.