Sauvegardes des machines Windows avec BackupPC
Si BackupPC est très efficaces pour gérer la sauvegardes de machines UNIX, les choses se compliquent pour sauvegarder les machines Windows. Les problèmes rencontrés le plus souvents sont les suivants:
- Limitation sur la taille des chemins
- Certains caractères exotiques empêche l'accès à des fichiers
- Les fichiers en cours d'utilisation sont verrouillés
Ces limitations existent aussi bien en utilisant la méthode SMB 1) ou rsyncd 2) .
Pour contourner les différentes limitations expliquées plus haut, il faut:
- Utiliser rsyncd comme méthode de transfert
- Utiliser une version récente de la dll cygwin qui supporte l'UTF-8
Tous ces prérequis peuvent être installés assez facilement en suivants les instructions sur cette page
Installation
Si vous utilisez WPKG pour déployer l'agent de sauvegarde, vous pouvez passer cette étape et aller directement à la configuration. Si vous installez manuellement l'agent, suivez les instructions de ce chapitre
Installer le client
Vous devez d'abord récupérer le fichier d'installation sur cette page: http://www.michaelstowe.com/backuppc/
Puis exécutez-le en administrateur. Après avoir accepté la licence d'utilisation, vous pourrez choisir le répertoire d'installation. Firewall Services recommande de conserver la valeur par défaut (C:\BackupPC).
L'étape suivante vous demande un identifiant et un mot de passe. Il ne s'agit pas d'un utilisateur WIndows, ni un utilisateur du domaine. C'est simplement un couple identifiant / mot de passe qui sera utilisé entre la machine Windows et le serveur BackupPC pour l'authentification. Vous pouvez mettre ce que vous voulez. Firewall Services recommande l'utilisation d'un mot de passe fort, généré aléatoirement. Vous pouvez par exemple générer un mot de passe aléatoire depuis votre iPasserelle (ou une autre machine Linux) avec la commande:
openssl rand -base64 35
Vous pourrez toujours changer l'identifiant et le mot de passe après l'installation en éditant le fichier C:\BackupPC\rsyncd.secret
Remplacer les scripts
Une fois l'agent installé, il faut remplacer certains fichiers fournit par défaut par des versions légèrement modifié (pour ajouter le support de plusieurs partitions)
Téléchargez les fichier suivants, et copiez les dans le répertoire C:\BackupPC\
- part.cmd
REM it's possible to snapshot several partition, just use something like: REM SET PART=c: e: f: SET PART=c:
- rsyncd.conf
use chroot = false strict modes = false pid file = rsyncd.pid socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=65536 [PART1] path = /cygdrive/B/ auth users = backup secrets file = rsyncd.secrets [PART2] path = /cygdrive/L/ auth users = backup secrets file = rsyncd.secrets [PART3] path = /cygdrive/M/ auth users = backup secrets file = rsyncd.secrets [PART4] path = /cygdrive/N/ auth users = backup secrets file = rsyncd.secrets
- backuppc.cmd
cd \backuppc call part.cmd vshadow -script=vss-setvar.cmd -exec=vsrsync.cmd %PART%
- vsrsync.cmd
REM @ECHO OFF REM ***************************************************************** REM REM VSRSYNC.CMD - Batch file template to start your rsync command (s). REM REM By Michael Stowe REM ***************************************************************** call vss-setvar.cmd cd \BackupPC SET CWRSYNCHOME=\BACKUPPC SET CYGWIN=nontsec SET CWOLDPATH=%PATH% SET PATH=\BACKUPPC;%PATH% dosdev B: %SHADOW_DEVICE_1% if "%SHADOW_DEVICE_2%" NEQ "" dosdev L: %SHADOW_DEVICE_2% if "%SHADOW_DEVICE_3%" NEQ "" dosdev M: %SHADOW_DEVICE_3% if "%SHADOW_DEVICE_4%" NEQ "" dosdev N: %SHADOW_DEVICE_4% REM Go into daemon mode, we'll kill it once we're done rsync -v -v --daemon --config=rsyncd.conf --no-detach --log-file=diagnostic.txt dosdev -r -d B: if "%SHADOW_DEVICE_2%" NEQ "" dosdev -r -d L: if "%SHADOW_DEVICE_3%" NEQ "" dosdev -r -d M: if "%SHADOW_DEVICE_4%" NEQ "" dosdev -r -d N:
Configurer le par feu
Deux réglages sont nécessaires pour que le serveur BackupPC puisse sauvegarder votre machine Windows:
- Le port utilisé par rysncd soit être accessible. Il s'agit du port TCP 873 par défaut. On peut aussi autoriser le binaire C:\BackupPC\rsync.exe au lieu de préciser un port
- Le port 445 doit être accessible. Il est utilisé par BackupPC pour demander la prise des snapshots avant la sauvegarde
Ces réglages peuvent être fait en ligne de commande:
set BACKUP_SERVER_IP=192.168.7.1 netsh firewall delete allowedprogram "%SYSTEMDRIVE%\BackupPC\rsync.exe netsh firewall add allowedprogram "%SYSTEMDRIVE%\BackupPC\rsync.exe" "Agent BackupPC" enable custom "%BACKUP_SERVER_IP%" netsh firewall add portopening TCP 445 "remote admin" enable custom "%BACKUP_SERVER_IP%"
Configurer l'utilisateur
Pour pouvoir prendre des snapshots et vous assurer que tout puisse être sauvegardé sans problème d'accès, il faut que toutes ces opérations soient exécutées par un utilisateur membre du groupe local Administrateur. L'utilisateur lui-même peut être du domaine (c'est même conseillé de déclarer un utilisateur sur votre iPasserelle). Vous n'avez qu'à ajouter l'utilisateur voulu dans le groupe Administrateurs. Par exemple, si votre domaine NT est FIREWALL.LOCAL et que votre utilisateur est backup:
net localgroup Administrateurs FIREWALL.LOCAL\backup /add
Configuration
Configuration sur le poste Windows
Sur le poste Windows, vous devez maintenant éditer le fichier C:\BackupPC\part.cmd pour indiquer quelles partitions doivent être sauvegardées, par exemple:
REM it's possible to snapshot several partition, just use something like: REM SET PART=c: e: f: SET PART=c: e: f:
La limite est de 4 partitions
Configuration sur le serveur BackupPC
Il ne vous reste plus qu'à déclarer une nouvelle machine à sauvegarder sur l'interface de BackupPC, vous pouvez utiliser ce fichier comme point de départ, et l'adapter à vos besoin:
- windows.pl
$Conf{BackupFilesOnly} = { 'PART1' => [ 'Users' ] }; $Conf{ClientNameAlias} = '192.168.7.12'; $Conf{DumpPostUserCmd} = '/usr/bin/win-post-backup $host $xferOK'; $Conf{DumpPreUserCmd} = '/usr/bin/win-pre-backup $host'; $Conf{RsyncShareName} = [ 'PART1', 'PART2' ]; $Conf{RsyncdPasswd} = 'mot_de_passe'; $Conf{RsyncdUserName} = 'backuppv'; $Conf{XferMethod} = 'rsyncd'; $Conf{UserCmdCheckStatus} = '1';