Qu'est-ce que le mode de sauvegarde dans Robocopy


19

J'essaie de copier un grand fichier de sauvegarde de base de données sur le réseau.

La copie du programme traditionnel ou xcopyéchoué avec un autre binaire a résulté. Également essayé robocopysans paramètre et a entraîné un échec. Je viens de faire une autre tentative avec l' robocopyutilisation du /zbparamètre (mode de redémarrage et de sauvegarde). Cela a pris beaucoup plus de temps mais a abouti à un succès.

Ma question est la suivante: le mode de sauvegarde est-il vraiment conçu pour copier des fichiers volumineux / de sauvegarde? J'ai cherché sur le net et je n'ai pas trouvé de réponse claire. J'apprécierais si un utilisateur expérimenté pouvait me donner un indice ou une meilleure solution.


Il y a très peu de différence entre la façon dont xcopy et robocopy copient réellement les données de A vers B, donc l'utilisation de robocopy sur xcopy ne réduira pas vos risques de corruption accidentelle des données. Cela signifie que vous avez obtenu un binaire différent après avoir utilisé xcopy, probablement parce que la base de données a été modifiée lors de sa copie. L'indicateur "/ Z" n'a pas d'importance ici (il contrôle simplement si robocopy ignore la partie existante du fichier), tout comme l'indicateur "/ B" qui contrôle essentiellement les autorisations demandées par l'application lors de l'ouverture du fichier source.
Angstrom

@Angstrom merci pour votre réponse. La différence binaire ne provient pas d'une base de données en évolution car il s'agit d'un fichier de sauvegarde statique (déjà détaché de la base de données) en cours de copie. Vrai, je crois que / ZB ne fait rien intentionnellement pour une copie plus robuste, mais l'indicateur redémarrable semble faire une écriture binaire plus précise (du fait que cela prend beaucoup plus de temps et donne une copie identique). Ou ce pourrait être la possibilité de redémarrage qui permet de réécrire les données perdues.
ydoow

Réponses:


12

Le mode de sauvegarde est un moyen de lire et d'écrire des fichiers en ignorant les problèmes d'autorisations.

Il utilise les fonctions SeBackupPrivilege(lecture) et SeRestorePrivilege(écriture) pour lire / écrire tous les fichiers, sans tenir compte des ACE qui vous empêcheraient de lire ou d'écrire un fichier.

Normalement, lorsque vous essayez de copier ou d'accéder à un fichier, Windows effectue une vérification pour vous assurer que vous avez l'autorisation de lire ou d'écrire à l'emplacement, mais avec SeBackupPrivilege(accordé aux groupes Opérateurs et administrateurs de sauvegarde), et SeRestorePrivilege(également accordé aux Opérateurs et administrateurs de sauvegarde groupes), ces contrôles sont contournés.

Pour vérifier si votre compte dispose de ces privilèges, vous pouvez exécuter la commande whoami /privà l'invite de commandes.


Seule réponse qui répond effectivement à la question définitivement, merci. Les sources des informations fournies le rendraient parfait.
Hashim

2

Je veux juste partager une mise à jour sur la résolution du problème ci-dessus.

Dans mon cas, je n'ai xcopypas réussi à copier le fichier sur 10 Go sur des serveurs dans un domaine et un emplacement de serveur différents.

De l'autre côté, robocopyavec

/zb- Utilise le mode de redémarrage. Si l'accès est refusé, cette option utilise le mode de sauvegarde.

peut copier avec succès. Il a cependant augmenté le temps de 1 heure à 2,5 heures.

-

Après avoir réorganisé le serveur, le fichier est maintenant copié sur les serveurs du même domaine et du même emplacement de serveur. Et l'utilisation xcopyest bien aussi.

-

Donc ma théorie à ce sujet concernerait probablement la connexion de stabilité entre les serveurs. Si la connexion n'est pas robuste (avec une interruption occasionnelle provoquant un problème d'accès), lors de la copie de fichiers volumineux comme mon cas, une corruption se produit probablement à tout moment pendant le long processus; robocopyavec redémarrage et sauvegarde peut très bien récupérer la copie. Le temps consacré à la récupération est probablement l'inconvénient.

Et comme note latérale, le FTP au lieu de la copie doit être utilisé s'il s'agit d'une tâche de routine


2

Je vous suggère fortement de créer un instantané et de sauvegarder le système de fichiers maintenant au repos. Vous pouvez ensuite exécuter rapidement robocopy à l'aide de / J (E / S sans tampon pour les fichiers volumineux). Voici un script pour créer un cliché instantané de C: qu'il appelle P :. Ce lecteur (P :) est une image statique du lecteur C: parfait pour les sauvegardes. Nous utilisons cette technique pour copier des images de disque de machine virtuelle active sur un lecteur de sauvegarde.

Ce qui suit utilise quatre fichiers de script:

  • Un fichier batch pour lancer les commandes shadow du disque
  • commandes shadow du disque pour détruire tout chads balançant ombre précédente en cas de plantage du fichier de commandes interne
  • une série de commandes d'ombre de disque pour créer l'ombre comme P:
  • une série de commandes à exécuter lorsque l'ombre est active (un fichier batch interne exécuté lorsque P: est actif)

1) le fichier batch pour démarrer le processus

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

2) le fichier de commande shadow "cleanup.cmds" pour détruire une ombre précédemment active

UNEXPOSE P:

3) le fichier de commande caché "diskshadow.cmds" qui construit l'ombre, puis appelle le quatrième fichier

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) Le fichier de commandes "backup.cmd" pour fonctionner sur l'ombre

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

Notez que Windows Server 2016 (et éventuellement d'autres versions) exécute un cliché instantané deux fois par jour au cours de la semaine, ce qui entraînera le plantage du cliché instantané créé ci-dessous. Assurez-vous que cette technique de sauvegarde ne chevauche pas ces commandes fantômes planifiées automatisées.


0

Pour développer la réponse de @ erict, voici comment utiliser PowerShell pour créer et détruire l'instantané:

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

Cela peut également être exécuté sur une machine distante, à l'aide de la communication à distance PowerShell :

Enter-PSSession RemoteComputer

#
# Run snapshot commands here
#

Exit-PSSession
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.