Was ist der Sicherungsmodus in Robocopy?


19

Ich versuche, eine große Datenbanksicherungsdatei über das Netzwerk zu kopieren.

Die traditionelle Programmkopie oder xcopyfehlgeschlagen mit anderen Binärdateien resultiert. Auch robocopyohne Parameter versucht , und führte zu einem Fehler. Habe gerade einen weiteren Versuch mit der robocopyVerwendung von /zbParametern gemacht (Neustart und Sicherungsmodus). Es dauerte viel länger, führte aber zu einem Erfolg.

Meine Frage ist, ist der Sicherungsmodus wirklich darauf ausgelegt, große / Sicherungsdateien zu kopieren? Habe im Netz gesucht und konnte keine klare Antwort finden. Würde mich freuen, wenn ein erfahrener Benutzer mir einen Hinweis oder eine bessere Lösung geben könnte.


Es gibt kaum einen Unterschied zwischen der Art und Weise, wie xcopy und robocopy Daten von A nach B kopieren. Wenn Sie also robocopy over xcopy verwenden, wird das Risiko einer versehentlichen Datenbeschädigung nicht verringert. Dies bedeutet, dass Sie nach der Verwendung von xcopy höchstwahrscheinlich eine andere Binärdatei erhalten haben, da die Datenbank während des Kopierens geändert wurde. Das "/ Z" -Flag ist hier nicht relevant (es steuert nur, ob die Robokopie einen vorhandenen Teil der Datei überspringt), ebenso wie das "/ B" -Flag, das im Wesentlichen die von der App beim Öffnen der Quelldatei angeforderten Berechtigungen steuert.
Angstrom

@Angstrom danke für deine Antwort. Der binäre Unterschied besteht nicht in einer sich ändernden Datenbank, da eine statische Sicherungsdatei (die bereits von der Datenbank getrennt ist) kopiert wird. Ich glaube, / ZB unternimmt absichtlich nichts für eine robustere Kopie, aber das neu startbare Flag scheint ein genaueres binäres Schreiben zu ermöglichen (aufgrund der Tatsache, dass es viel länger dauert und zu einer identischen Kopie führt). Oder es könnte die Neustartfähigkeit sein, die es ermöglicht, verlorene Daten neu zu schreiben.
Ydoow

Antworten:


12

Der Sicherungsmodus ist eine Möglichkeit zum Lesen und Schreiben von Dateien, wobei Berechtigungsprobleme ignoriert werden.

Es verwendet SeBackupPrivilege(Lesen) und SeRestorePrivilege(Schreiben), um alle Dateien zu lesen / schreiben, wobei alle ACEs ignoriert werden, die Sie daran hindern würden, eine Datei zu lesen oder zu schreiben.

Normalerweise , wenn eine Datei zu kopieren oder der Zugriff versucht, Windows führt eine Überprüfung , um sicherzustellen , haben Sie die Erlaubnis zu Ort zu lesen oder zu schreiben, aber mit SeBackupPrivilege(gewährt auf die Sicherungs - Operatoren und Administratoren Gruppen) und SeRestorePrivilege(auch die Sicherungs - Operatoren und Administratoren gewährt Gruppen) werden diese Prüfungen umgangen.

Um zu überprüfen, ob Ihr Konto über diese Berechtigungen verfügt, können Sie den Befehl whoami /privan einer Eingabeaufforderung ausführen .


Nur eine Antwort, die die Frage tatsächlich definitiv beantwortet, danke. Quellen für die bereitgestellten Informationen würden es perfekt machen.
Hashim

2

Ich möchte nur ein Update zur Behebung des oben genannten Problems veröffentlichen.

In meinem Fall xcopykonnte die Datei nicht über 10 GB zwischen Servern in verschiedenen Domänen und Servern kopiert werden.

Auf der anderen Seite robocopymit

/zb- Verwendet den Neustartmodus. Wenn der Zugriff verweigert wird, verwendet diese Option den Sicherungsmodus.

kann erfolgreich kopieren. Es erhöhte die Zeit von 1 Stunde auf 2,5 Stunden.

- -

Nach dem Neuanordnen des Servers wird die Datei jetzt auf mehrere Server in derselben Domäne und demselben Serverstandort kopiert. Und mit xcopyist auch in Ordnung.

- -

Meine Theorie dazu würde sich wahrscheinlich auf die Stabilitätsverbindung zwischen Servern beziehen. Wenn die Verbindung nicht robust ist (wobei gelegentlich ein Ausfall ein Zugriffsproblem verursacht), tritt beim Kopieren großer Dateien wie in meinem Fall wahrscheinlich jederzeit während des langen Vorgangs eine Beschädigung auf. robocopyMit Neustart und Backup kann die Kopie ziemlich gut wiederhergestellt werden. Die für die Wiederherstellung aufgewendete Zeit ist wahrscheinlich der Nachteil.

Und als Randnotiz sollte FTP anstelle von Kopie verwendet werden, wenn es sich um eine Routineaufgabe handelt


2

Ich würde dringend empfehlen, dass Sie einen Snapshot erstellen und das jetzt stillgelegte Dateisystem sichern. Sie können Robocopy dann schnell mit / J ausführen (ungepufferte E / A für große Dateien). Hier ist ein Skript zum Erstellen einer Schattenkopie von C:, das P: heißt. Dieses Laufwerk (P :) ist ein statisches Image des Laufwerks C:, das sich perfekt für Backups eignet. Wir verwenden diese Technik, um aktive Images von virtuellen Maschinen auf ein Sicherungslaufwerk zu kopieren.

Im Folgenden werden vier Skriptdateien verwendet:

  • Eine Batch-Datei, um die Disk Shadow-Befehle zu starten
  • Festplattenschattenbefehle zum Zerstören von baumelnde Chads vorheriger Schatten, wenn die innere Batchdatei abgestürzt ist
  • Eine Reihe von Disk Shadow-Befehlen zum Erstellen des Schattens als P:
  • eine Reihe von Befehlen, die ausgeführt werden sollen, während der Schatten aktiv ist (eine innere Batchdatei, die ausgeführt wird, während P: aktiv ist)

1) die Batch-Datei, um den Prozess zu starten

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

2) die Schattenbefehlsdatei "cleanup.cmds", um einen zuvor aktiven Schatten zu zerstören

UNEXPOSE P:

3) die Schattenbefehlsdatei "diskshadow.cmds", die den Schatten erstellt und dann die vierte Datei aufruft

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) Die Befehlsdatei "backup.cmd", um den Schatten zu bearbeiten

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

Beachten Sie, dass Windows Server 2016 (und möglicherweise andere Versionen) während der Woche zweimal täglich eine Schattenkopie ausführt, wodurch die unten erstellte Schattenkopie abstürzt. Stellen Sie sicher, dass sich diese Sicherungstechnik nicht mit diesen automatisierten geplanten Schattenbefehlen überschneidet.


0

Um die Antwort von @ erict zu erweitern, verwenden Sie PowerShell, um den Snapshot zu erstellen und zu zerstören:

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

Dies kann auch auf einem Remotecomputer mithilfe von PowerShell-Remoting ausgeführt werden :

Enter-PSSession RemoteComputer

#
# Run snapshot commands here
#

Exit-PSSession
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.