¿Qué es el modo de copia de seguridad en Robocopy?


19

Estoy tratando de copiar un gran archivo de copia de seguridad de la base de datos a través de la red.

El programa tradicional copió o xcopyfalló con diferentes resultados binarios. También intentado robocopysin parámetro, y resultó en un error. Acabo de hacer otro intento con el robocopyuso de /zbparámetros (reinicio y modo de copia de seguridad). Tomó mucho más tiempo pero resultó en un éxito.

Mi pregunta es, ¿el modo de copia de seguridad está realmente diseñado para copiar archivos grandes / de copia de seguridad? He buscado a través de la red y no pude encontrar una respuesta clara. Agradecería si algún usuario experimentado pudiera darme una pista o una mejor solución.


Hay muy poca diferencia entre cómo xcopy y robocopy realmente copian datos de A a B, por lo que usar robocopy sobre xcopy no reducirá sus posibilidades de corrupción accidental de datos. Lo que significa que obtuvo un binario diferente después de usar xcopy muy probablemente porque el DB se modificó mientras se copiaba. El indicador "/ Z" no es relevante aquí (solo controla si la robocopy salta sobre la parte existente del archivo), al igual que el indicador "/ B" que básicamente controla los permisos solicitados por la aplicación al abrir el archivo fuente.
Angstrom

@ Angstrom gracias por su respuesta. La diferencia binaria no es el cambio de una base de datos, ya que se está copiando un archivo de copia de seguridad estático (ya separado de la base de datos). Es cierto, creo que / ZB no hace nada intencionalmente para una copia más robusta, pero el indicador reiniciable parece hacer una escritura binaria más precisa (por el hecho de que toma mucho más tiempo y da como resultado una copia idéntica). O podría ser que la reiniciabilidad haga posible reescribir datos perdidos.
ydoow

Respuestas:


12

El modo de copia de seguridad es una forma de leer y escribir archivos ignorando cualquier problema de permisos.

Utiliza SeBackupPrivilege(lectura) y SeRestorePrivilege(escritura) para leer / escribir todos y cada uno de los archivos, sin tener en cuenta las ACE que le impidan leer o escribir un archivo.

Normalmente, cuando intenta copiar o acceder a un archivo, Windows realiza una comprobación para asegurarse de que tiene permiso para leer o escribir en la ubicación, pero con SeBackupPrivilege(otorgado a los grupos Operadores y Administradores de respaldo) y SeRestorePrivilege(también otorgado a los Operadores y Administradores de respaldo grupos), estas comprobaciones se omiten.

Para verificar si su cuenta tiene estos privilegios, puede ejecutar el comando whoami /priven el símbolo del sistema.


Solo responda que realmente responda la pregunta definitivamente, gracias. Las fuentes de información proporcionadas lo harían perfecto.
Hashim

2

Solo quiero compartir una actualización para resolver el problema anterior.

En mi caso, xcopyno pude copiar el archivo de más de 10 GB en servidores en diferentes dominios y ubicaciones de servidores.

Por otro lado, robocopycon

/zb- Utiliza el modo de reinicio. Si se deniega el acceso, esta opción usa el modo Copia de seguridad.

Puede copiar con éxito. Sin embargo, aumentó el tiempo de 1 hora a 2.5 horas.

-

Después de reorganizar el servidor, el archivo se copia en todos los servidores en el mismo dominio y ubicación del servidor ahora. Y usar también xcopyestá bien.

-

Entonces, mi teoría sobre esto probablemente sea sobre la conexión de estabilidad entre servidores. Si la conexión no es sólida (ocasionalmente, la desconexión causa un problema de acceso), al copiar archivos grandes como en mi caso, es probable que se produzca una corrupción en cualquier momento durante el largo proceso; robocopycon reinicio y copia de seguridad puede recuperar la copia bastante bien. El tiempo dedicado a la recuperación es probablemente el lado negativo.

Y como nota al margen, se debe usar FTP en lugar de copia si va a ser una tarea rutinaria


2

Le sugiero encarecidamente que cree una instantánea y haga una copia de seguridad del sistema de archivos ahora inactivo. Luego puede ejecutar robocopy rápidamente usando / J (E / S sin búfer para archivos grandes). Aquí hay un script para crear una instantánea de C: que llama P :. Esta unidad (P :) es una imagen estática de la unidad C: perfecta para copias de seguridad. Utilizamos esta técnica para copiar imágenes de disco de máquina virtual activa en una unidad de copia de seguridad.

Lo siguiente usa cuatro archivos de script:

  • Un archivo por lotes para patear los comandos de la sombra del disco
  • comandos de sombra de disco para destruir cualquier chads colgantes sombra anterior si el archivo por lotes interno se bloqueó
  • Una serie de comandos de sombra de disco para crear la sombra como P:
  • Una serie de comandos para ejecutar mientras la sombra está activa (un archivo por lotes interno ejecutado mientras P: está activo)

1) el archivo por lotes para iniciar el proceso

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

2) el archivo de comando de sombra "cleanup.cmds" para destruir una sombra previamente activa

UNEXPOSE P:

3) el archivo de comando de sombra "diskshadow.cmds" que construye la sombra y luego llama al cuarto archivo

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) El archivo de comando "backup.cmd" para operar en la sombra

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

Tenga en cuenta que Windows Server 2016 (y posiblemente otras versiones) ejecuta una instantánea dos veces al día durante la semana, lo que hará que la instantánea creada a continuación se bloquee. Asegúrese de que esta técnica de copia de seguridad no se superponga con estos comandos de sombra programados automatizados.


0

Para ampliar la respuesta de @ erict, aquí se explica cómo usar PowerShell para crear y destruir la instantánea:

$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()

Esto también se puede ejecutar en una máquina remota, utilizando la comunicación remota de PowerShell :

Enter-PSSession RemoteComputer

#
# Run snapshot commands here
#

Exit-PSSession
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.