Modifications entre les versions 4 et 35 (s'étendant sur 31 versions)
Version 4 à la date du 2009-01-26 08:03:34
Taille: 8205
Éditeur: PascalBouNassar
Commentaire:
Version 35 à la date du 2009-02-17 21:53:26
Taille: 12024
Commentaire: simplification du script + question
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
Test du logiciel backuppc:

Apres l'installation du logiciel: (apache2 ....

Changer le mot de passe de l’utilisateur « backuppc »:

# ''htpasswd /etc/backuppc/htpasswd backuppc''

 . ''Explication du /etc/backuppc/config.pl:''
 .
 .

{{{


$Conf{ServerHost} = '192.168.2.151'; // l’adresse ip du serveur ou le nom du serveur de sauvegarde.
= I‐ Installation de Backuppc : Procédure à zéro sur une debian etch =
{{{
### Voir installation d'un serveur type AUF:
1- Les outils de base : ssh, rsync
  aptitude install ssh rsync

2- Le Serveur WEB apache2 et de Backuppc

  aptitude install apache2 backuppc
  cp /etc/backuppc/apache.conf /etc/apache2/conf.d/backuppc.conf
  /etc/init.d/apache2 start
  /etc/init.d/backuppc start


3- Modifier les mots de passe de l'utilisateur backuppc pour l'accès a l'interface web d'administration:

 htpasswd -b /etc/backuppc/htpasswd backuppc <mot de passe>
}}}
= II‐ Procedure de configuration et de sauvegarde =
Note: On backup tout sauf des répertoires particuliers (Backuppc gère les doublons), on met une liste à exclure (les .mp3 ....) , on sauvegarde les serveurs la nuit

=== II -1- Le fichier de configuration config.pl du serveur: ===
Explication du fichier de config : /etc/backuppc/config.pl

{{{
$Conf{ServerHost} = 'IP'; // l’adresse ip du serveur ou le nom du serveur de sauvegarde.
Ligne 19: Ligne 28:
Ligne 21: Ligne 29:

$Conf{MaxBackups} = 4; // nombre maximum de sauvegardes sumultanee à effectuer

$Conf{CompressLevel} = 3; //
taux de compression qui peut prendre des valeurs entre 0 et 9 (0 pour désactiver la compression). 3 est la valeur recommandée pour avoir une

bonne compression sans trop surcharger le processeur.
$Conf{MaxBackups} = 4; // nombre maximum de sauvegardes sumultanée à effectuer
$Conf{CompressLevel} = 3; // taux de compression qui peut prendre des valeurs entre 0 et 9 (0 pour désactiver la compression). 3 est la valeur recommandée pour avoir une bonne compression sans trop surcharger le processeur.
Ligne 29: Ligne 32:
Ligne 31: Ligne 33:
Ligne 33: Ligne 34:
Ligne 35: Ligne 35:
Ligne 37: Ligne 36:
Ligne 39: Ligne 37:
Ligne 41: Ligne 38:
Ligne 43: Ligne 39:
Ligne 45: Ligne 40:
Ligne 47: Ligne 41:
Ligne 50: Ligne 43:
// de 7:30 AM a 6 :30 PM ,,, Pour ne pas faire de backup durant cette periode du lundi au Vendredi
Ligne 51: Ligne 45:
Ligne 53: Ligne 46:

hourBegin => 7.5, // de 7:30 AM a 6 :30
hourBegin => 7.5,
Ligne 57: Ligne 48:

weekDays => [1, 2, 3, 4, 5], // du lundi au vendredi
weekDays => [1, 2, 3, 4, 5],
Ligne 61: Ligne 50:

]; // la période où il faut pas faire trop de backup si les machines ne répondent pas bien aux pings. Le logiciel fait des pings périodiques et garde des statistiques. Il sait donc quand une machine ou le réseau vers la machine est un peu saturé.

$Conf{XferMethod} = 'rsync'; // La méthode de sauvegarde par défaut (Ca pourra etre tar, rsyncd,smb)
];
$Conf{XferMethod} = 'rsync'; // La méthode de sauvegarde par défaut
Ligne 67: Ligne 53:
Ligne 69: Ligne 54:

$Conf{SendmailPath}='/usr/sbin/

'''$Conf{SendmailPath} = '/usr/sbin/sendmail'; au début il faut que le Serveur mail 'Sendmail' et le domaine sont configuré pour spécifier ce path'''

'''
$Conf{EMailNotifyMinDays} = 2.5;''' : période minimale durant laquelle un utilisateur ne recevra pas de mails. La valeur par défaut (2.5) signifie que l'utilisateur ne recevra qu'un message tous les trois jours au maximum

'''
$Conf{EMailFromUserName} = 'backuppc';''' : adresse de l'expéditeur. Les emails envoyés prendront en champ from la valeur indiquée ici. Il est possible d'indiquer le nom d'utilisateur ou l'adresse email complète en fonction de la configuration de votre serveur mail.

'''
$Conf{EMailAdminUserName} = ' admin-backup@backup.domain.com ';''' : adresse email de l'administrateur du serveur de sauvegarde

'''
$Conf{EMailUserDestDomain} = '@domain.com';''' : domaine des utilisateurs. Les emails seront envoyés à l'adresse {utilisateur}@domain.com

la configuration de l'interface CGI :

'''
$Conf{CgiAdminUserGroup} = '';''''''' : groupe des utilisateurs administrateurs. Le groupe doit exister dans le fichier .htpasswd ''

'''''
$Conf{CgiAdminUsers} = 'admin utilisateur1';''' : utilisateurs administrateurs. Chaque utilisateur doit exister dans le fichier .htpasswd ''

'''''
$Conf{CgiURL} = 'http://backup.domain.com/cgi-bin/BackupPC_Admin';''' : adresse HTTP du script CGI ''

'''''
$Conf{Language} = 'fr';''' : langue de l'interface CGI ''

'''''
$Conf{CgiDateFormatMMDD} = 0;''' : format de date. 0 pour le format internationnal (JJ/MM) et 1 pour le format US (MM/JJ) ''

}}}



'''''Fic
hier de configuration par hôtes''' ''

''Pour configurer ou ajoute un utilisateur on entre dans ''/etc/backuppc'' et on ouvre le fichier ''«hosts»'' ''


{{{
''host dhcp user moreUsers hostname1 1 user2 stillanotheruser //exemple ''

pc-pascal 0 backuppc                                 //exemple ''


}}}



- Depuis l'interface graphique lancer une sauvegarde complete afin que le logiciel cree le repertoire de sauvegarde
/var/lib/backuppc/pc/pc-pascal

- On doit ensuite ajouter dans ce répertoire un fichier ''config.pl'' qui contient les options suivantes: ''

{{{
$Conf{EMailNotifyMinDays} = 2.5;''' : période minimale durant laquelle un utilisateur ne recevra pas de mails. La valeur par défaut (2.5) signifie que l'utilisateur ne recevra qu'un message tous les trois jours au maximum
$Conf{EMailFromUserName} = 'backuppc';''' : adresse de l'expéditeur. Les emails envoyés prendront en champ from la valeur indiquée ici. Il est possible d'indiquer le nom d'utilisateur ou l'adresse email complète en fonction de la configuration de votre serveur mail.
$Conf{EMailAdminUserName} = ' admin-backup@backup.domain.com ';''' : adresse email de l'administrateur du serveur de sauvegarde
$Conf{EMailUserDestDomain} = '@domain.com';''' : domaine des utilisateurs. Les emails seront envoyés à l'adresse {utilisateur}@domain.com
### la configuration de l'interface CGI :
$Conf{CgiAdminUserGroup} = '';''''''' : groupe des utilisateurs administrateurs. Le groupe doit exister dans le fichier .htpasswd
$Conf{CgiAdminUsers} = 'admin utilisateur1';''' : utilisateurs administrateurs. Chaque utilisateur doit exister dans le fichier .htpasswd
$Conf{CgiURL} = 'http://backup.domain.com/cgi-bin/BackupPC_Admin';''' : adresse HTTP du script CGI
$Conf{Language} = 'fr';''' : langue de l'interface CGI
$Conf{CgiDateFormatMMDD} = 0;''' : format de date. 0 pour le format internationnal (JJ/MM) et 1 pour le format US (MM/JJ)

// Exclusion de la musique et de la video , tmp ...
$Conf{BackupFilesExclude} = {
'/' => [ '/dev', '/proc', '/sys', '/mnt', '/media',
'/var/cache/apt/archives', '/var/spool/squid',
'/.backup', '/volatil', '/export/.tampon',
'*.avi', '*.AVI', '*.mpg', '*.MPG', '*.mov', '*.MOV',
'*.mp3', '*.MP3', '*.wav', '*.WAV',
'*.wmv', '*.WMV', '*.wma', '*.WMA',
'*.nrg', '*.NRG', '*.dvf', '*.DVF',
'*.bmp', '*.BMP', '*.tif', '*.TIF', '*.tiff', '*.TIFF',
'*.mso', '*.MSO', '*.dbx', '*.DBX', '*.exe', '*.EXE',
'*.gif', '*.GIF', '*.jpg', '*.JPG', '*.png', '*.PNG',
'*.iso', '*.ISO',
'*.dat', '*.DAT',
],
};

}}}
=== II-2- Sauvegarder le client pc-pascal ===
il faut ajouter dans /etc/backuppc/
hosts la ligne

{{{
pc-pascal 0 backuppc #### 0 pour adresse statique
}}}
- Depuis l'interface graphique lancer une sauvegarde complète afin que le logiciel crée le répertoire de sauvegarde /var/lib/backuppc/pc/pc-pascal

- Sans doute, la sauvegarde échoue puisque la config du client n'existe toujours pas mais l'étape précédente crée le répertoire pc-pascal dans /var/lib/backuppc/pc/ du serveur (sinon crée le manuellement)

=== II-3- parametrer la config du client sur le serveur ===
On doit ensuite ajouter dans ce répertoire un fichier ''''config.pl'''' qui contient les options suivantes:

{{{
Ligne 123: Ligne 100:
$Conf{RsyncShareName} = ['/','/home','/backup','/srv','/usr','/var']; $Conf{RsyncShareName} = ['/','/home']; #### D'apres le client pc-pascal qui contient deux partitions (Ceci est un exemple)
Ligne 152: Ligne 129:

}}}

Passons à l'authentification par clé RSA. Nous allons copier la clé d'authentification de l'utilisateur backuppc de notre serveur de sauvegarde, sur l'hôte Linux.

Première étape, si ce n'est pas déjà fait : générer les clefs sur le serveur de sauvegarde :
}}}
NB: l'option '--specials' donne la possibilité a rsync de copier des fichiers spéciaux des "non-device"

=== II- 4- Les cles ssh ===
Copions la clé ssh de l'utilisateur backuppc du serveur vers le client:

''Première étape, si ce n'est pas déjà fait : créer les cl''''é''''s de l'utilisateur backuppc sur le serveur de sauvegarde : ''
Ligne 161: Ligne 140:
cd /var/lib/backuppc/.ssh/
ssh-copy-id -i id_rsa.pub root@pc-pascal
}}}


Essayons à présent de nous connecter, depuis le serveur de sauvegarde (utilisateur backuppc) sur le client:
cd /var/lib/backuppc/.ssh
}}}
''Copier les cles sur le client<<BR>>''

{{{

ssh-copy-id - i id_dsa.pub root@pc-pascal
}}}
Essayons à présent de nous connecter, depuis le serveur de sauvegarde (utilisateur backuppc) sur le client: '' ''
Ligne 170: Ligne 151:

Maintenant retournant sur l'interface web , et lançons nos premières sauvegardes


Restauration avec BackupPC : ''

Apres un crash disque si on a une sauvegarde complete, on doit etre capable de restaurer un client tres facilement:

1- Il faut avoir la table des partitions pour les recreer

2- J'ai fait des tests avec un « rescuecd » mais un CD debian pourra etre utilise en mode rescue

3- démarrons le client avec un « RescueCD » ''

4- configurer l'interface réseau: net-setup eth0 par exemple

5- cfdisk pour recréer les partitions ( Prenons un exemple qu'on a un '/' et un autre '/home')

6- mkdir –p /mnt/target/home

7 -mount –t ext3 /dev/sda1 /mnt/target

8- mount –t ext3 /dev/sda2 /mnt/target/home

9- A partir de l'interface graphique, selectionner le client, choisir tous les fichiers a partir de la derniere sauvegarde et choisir «Restore the files below dir »
on met « /mnt/target »

10- Pour restaurer « /home » on met dans “Restore the files below dir” “/mnt/target/home” et on fait “restore” ''


11- on revient dans la ligne de commande sur l’ordinateur a restaurer et on tape :
Finalement, lancer une sauvegarde complete ....

= III- Restauration avec BackupPC =
''Apres un crash disque si on a une sauvegarde complète, on doit etre capable de restaurer un client très facilement: ''

 * '' Il faut avoir la table des partitions pour les recreer ( on prendra l'exemple du client pc-pascal ayant deux partitions le / et le /home)''
 * ''J'ai fait des tests avec un « rescuecd » (je l'ai trouvé interessant car il contient tous les outils necessaires ssh, rsync, la famille fdisk, la possibilite de configurer le reseau....)' mais un CD debian-etch pourra etre utilise en mode rescue ''

 * ''démarrons le client avec le « RescueCD » '' '' ''
 * configurer l'interface réseau: net-setup eth0'' ''
 * Recréer les partitions (exemple en utilisant cfdsik cree le / et le /home )
 * Creer deux repertoire /mnt/target et /mnt/target/home (le target sera l'equivalent du / ) : mkdir –p /mnt/target/home '' ''
 * Monter les partitions :

 * mount –t ext3 /dev/sda1 /mnt/target '' ''
 * mount –t ext3 /dev/sda2 /mnt/target/home
 * Recuperer la cles ssh de backuppc a partir du serveur :
 {{{
ssh-copy-id - i id_dsa.pub root@pc-pascal
}}}
 * A partir de l'interface graphique, selectionner le client,
 * A partir de la derniere sauvegarde: choisir le client, selectionnez tous le fichiers et choisir «Restore the files below dir » on met « /mnt/target »
 * La restauration ne copie pas le /home qui est sur une partition differente, il faut la faire manuellement,
 * Pour restaurer « /home » on met dans “Restore the files below dir” “/mnt/target/home” et on fait “restore” '' ''

Après la restauration :

Sur le client , chrooter le /mnt/target
Ligne 203: Ligne 182:

12-
Installer Grub:
# grub-install hd0 (ou hd0 c’est le MBR du premier disque dur) ''
Installer Grub:  # grub-install hd0 (ou hd0 c’est le MBR du premier disque dur)
Ligne 209: Ligne 186:
# find /boot/grub/stage1 alors elle retourne par exemple root(hd0,0) donc le dernier (0) c’est la première partition, si elle retourne root(hd0,2) le (2) indique la troisièmes partition.

Alors on exécute les commandes suivantes :

#grub root (hd0,?) #setup (hd0)

Si le Grub donne une erreur donc on peut essayer la commande suivante:
grub-install --root-directory=/boot (hd0)


………………………………………………………………………………………..
# find /boot/grub/stage1 alors elle retourne par exemple root(hd0,0) donc le dernier (0) c’est la première partition, si elle retourne root(hd0,2) le (2) indique la troisièmes partition. '' ''

Alors on exécute les commandes suivantes : '' ''

#grub root (hd0,?) #setup (hd0) '' ''

Si le Grub donne une erreur donc on peut essayer la commande suivante: grub-install --root-directory=/boot (hd0) ''''' '' '''

= IV‐ Particularités =
=== V-1 pour les serveurs virtuels (OpenVZ) ===
 * Il suffit donc de backupper les machines hôtes à 100%
 * En OpenVZ, la sauvegarde se fait sur le repertoire $Conf'''{RsyncShareName'''} = ['/var/lib/vz/root/xxx/'] qui contient l'image de la machine virtuelle et donc elle sera automatiquement sauvegarde au complet.
 * la restauration se fait en recuperant le fichier mentionne de la machine virtuelle

=== IV -2 Pour les systemes en LVM ===
La sauvegarde est pareille,Verifier l'existance du /boot au niveau de la sauvegarde dans le config.pl du client $Conf{'''RsyncShareName} =''' ['/','/home','/boot']; Pour la restauration complète du système en''' '''LVM on doit utiliser un RescueCD 1.1.4 qui support la création des partions LVM (Kernel 2.6..) Crée les partitions /boot en EXT3 et les autres partions LVM, les VL et les VG Crée un répertoire /mnt/target/boot et /mnt/target/home pour pouvoir restaurer les partition /boot et /home en tappant:

 * mkdir -p /mnt/target/boot
 * mkdir -p /mnt/target/home
 * mount -t ext3 /dev/sda1 /mnt/target/boot
 * mount /dev/testvg/root /mnt/target/
 * mount /dev/testvg/home /mnt/target/home

=== IV -3 Pour la sauvegarde d'un poste fixe ou portable ===
 * Pour un poste fixe : si c’est sous Mysql/NFS à ne pas backupper
 * Pour le reste poste fixe ordinaire ou portable, On ne backup pas les mp3, films...

=== IV - 4 Limiter l'accès de l'utilisateur backuppc a rsync uniquement au niveau du client ===

 * Sur le client on crée un script nommé "restrict-to-rsync" dans /root/.ssh/ ou on trouve la clé publique de backuppc dans le fichier "authorized_keys"

 {{{
# script "/root/.ssh/restrict-to-rsync"
#!/bin/sh
logfile=/root/.ssh/restrict-to-rsync.log
case "$SSH_ORIGINAL_COMMAND" in
  *\&*|*\(*|*\{*|*\;*|*\<*|*\`*|*\|*)
    echo `date` "- SSH connection rejected" >> $logfile
    ;;
  rsync\ --server*)
    echo `date` "- SSH connection accepted" >> $logfile
    $SSH_ORIGINAL_COMMAND
    ;;
  *)
    echo `date` "- SSH connection rejected" >> $logfile
    ;;
esac
}}}
 
 * Ensuite, éditez le fichier authorized_keys de sorte que la ligne devient:
 {{{
command = "/root/.ssh/restrict-to-rsync" ssh-dsa AAAAB3 ...
}}}

 . ''Est-ce qu'il ne suffirait pas plutôt de mettre directement ici `command="/usr/bin/rsync --server"` ? -- ProgFou''

I‐ Installation de Backuppc : Procédure à zéro sur une debian etch

### Voir installation d'un serveur type AUF:
1- Les outils de base : ssh, rsync
  aptitude install ssh rsync

2- Le Serveur WEB apache2 et de Backuppc

  aptitude install apache2 backuppc
  cp /etc/backuppc/apache.conf /etc/apache2/conf.d/backuppc.conf
  /etc/init.d/apache2 start
  /etc/init.d/backuppc start


3- Modifier les mots de passe de l'utilisateur backuppc pour l'accès a l'interface web d'administration:

 htpasswd -b /etc/backuppc/htpasswd backuppc <mot de passe>

II‐ Procedure de configuration et de sauvegarde

Note: On backup tout sauf des répertoires particuliers (Backuppc gère les doublons), on met une liste à exclure (les .mp3 ....) , on sauvegarde les serveurs la nuit

II -1- Le fichier de configuration config.pl du serveur:

Explication du fichier de config : /etc/backuppc/config.pl

$Conf{ServerHost} = 'IP'; // l’adresse ip du serveur ou le nom du serveur de sauvegarde.
$Conf{WakeupSchedule} = [13]; // pour lancer la sauvegarde à 13h l’heure ou par exemple
$Conf{WakeupSchedule} = [1..24]; // toutes les heures de la journée
$Conf{MaxBackups} = 4; // nombre maximum de sauvegardes sumultanée à effectuer
$Conf{CompressLevel} = 3; // taux de compression qui peut prendre des valeurs entre 0 et 9 (0 pour désactiver la compression). 3 est la valeur recommandée pour avoir une bonne compression sans trop surcharger le processeur.
$Conf{MaxOldLogFiles} = 28; // L'âge max des logs (en jours)
$Conf{DfMaxUsagePct} = 92; // à 92% de saturation de disque il donne une notification de saturation du disque.
$Conf{BackupPCUser} = 'backuppc'  // le nom de l’utilisateur qui à l’accès de faire le backup dans le serveur.
$Conf{FullPeriod} = 13.97; // full backup par exemple toutes les 2 semaines (par PC )
$Conf{IncrPeriod} = 0.97; // Incrémental backup tous les jours
$Conf{FullKeepCnt} = 6; // 6 backup complets
$Conf{FullAgeMax} = 93; // Age maximale des backup-complet = 93 jours par exemple
$Conf{FullKeepCntMin} = 1; // Garder au minimum un backup-complet, même s'il est plus vieux que 93 jours.
$Conf{IncrKeepCnt} = 15; // On garde par exemple 15 sauvegardes incrémentales, ce qui nous fait 15 jours.
$Conf{IncrAgeMax} = 30; // 30 jours max pour l'âge des sauvegardes incrémentales.
$Conf{IncrKeepCntMin} = 3; // On garde 3 sauvegardes incrémentales quelques soient leur âge.

// de 7:30 AM a 6 :30 PM ,,, Pour ne pas faire de backup durant cette periode du lundi au Vendredi
$Conf{BlackoutPeriods} = [
{
hourBegin => 7.5,
hourEnd => 18.5,
weekDays => [1, 2, 3, 4, 5],
},
];
$Conf{XferMethod} = 'rsync'; // La méthode de sauvegarde par défaut
$Conf{PingMaxMsec} = 999; // Délai maximum pour un ping, avant de considérer que le PC n'est pas joignable et donc ne peut se faire un backup.
$Conf{Language} = 'fr' // l'interface Web et les messages en français ou « en » pour l'anglais.
$Conf{EMailNotifyMinDays} = 2.5;''' : période minimale durant laquelle un utilisateur ne recevra pas de mails. La valeur par défaut (2.5) signifie que l'utilisateur ne recevra qu'un message tous les trois jours au maximum
$Conf{EMailFromUserName} = 'backuppc';''' : adresse de l'expéditeur. Les emails envoyés prendront en champ from la valeur indiquée ici. Il est possible d'indiquer le nom d'utilisateur ou l'adresse email complète en fonction de la configuration de votre serveur mail.
$Conf{EMailAdminUserName} = ' admin-backup@backup.domain.com ';''' : adresse email de l'administrateur du serveur de sauvegarde
$Conf{EMailUserDestDomain} = '@domain.com';''' : domaine des utilisateurs. Les emails seront envoyés à l'adresse {utilisateur}@domain.com
### la configuration de l'interface CGI :
$Conf{CgiAdminUserGroup} = '';''''''' : groupe des utilisateurs administrateurs. Le groupe doit exister dans le fichier .htpasswd
$Conf{CgiAdminUsers} = 'admin utilisateur1';''' : utilisateurs administrateurs. Chaque utilisateur doit exister dans le fichier .htpasswd
$Conf{CgiURL} = 'http://backup.domain.com/cgi-bin/BackupPC_Admin';''' : adresse HTTP du script CGI
$Conf{Language} = 'fr';''' : langue de l'interface CGI
$Conf{CgiDateFormatMMDD} = 0;''' : format de date. 0 pour le format internationnal (JJ/MM) et 1 pour le format US (MM/JJ)

// Exclusion de la musique et de la video , tmp ...
$Conf{BackupFilesExclude} = {
'/' => [ '/dev', '/proc', '/sys', '/mnt', '/media',
'/var/cache/apt/archives', '/var/spool/squid',
'/.backup', '/volatil', '/export/.tampon',
'*.avi', '*.AVI', '*.mpg', '*.MPG', '*.mov', '*.MOV',
'*.mp3', '*.MP3', '*.wav', '*.WAV',
'*.wmv', '*.WMV', '*.wma', '*.WMA',
'*.nrg', '*.NRG', '*.dvf', '*.DVF',
'*.bmp', '*.BMP', '*.tif', '*.TIF', '*.tiff', '*.TIFF',
'*.mso', '*.MSO', '*.dbx', '*.DBX', '*.exe', '*.EXE',
'*.gif', '*.GIF', '*.jpg', '*.JPG', '*.png', '*.PNG',
'*.iso', '*.ISO',
'*.dat', '*.DAT',
],
};

II-2- Sauvegarder le client pc-pascal

il faut ajouter dans /etc/backuppc/hosts la ligne

pc-pascal                      0            backuppc   #### 0 pour adresse statique

- Depuis l'interface graphique lancer une sauvegarde complète afin que le logiciel crée le répertoire de sauvegarde /var/lib/backuppc/pc/pc-pascal

- Sans doute, la sauvegarde échoue puisque la config du client n'existe toujours pas mais l'étape précédente crée le répertoire pc-pascal dans /var/lib/backuppc/pc/ du serveur (sinon crée le manuellement)

II-3- parametrer la config du client sur le serveur

On doit ensuite ajouter dans ce répertoire un fichier 'config.pl' qui contient les options suivantes:

$Conf{XferMethod} = 'rsync';
$Conf{RsyncClientPath} = '/usr/bin/rsync';
$Conf{RsyncClientCmd} = '$sshPath -l root $host $rsyncPath $argList+';
$Conf{RsyncClientRestoreCmd} = '$sshPath -l root $host $rsyncPath $argList+';
$Conf{RsyncShareName} = ['/','/home']; #### D'apres le client pc-pascal qui contient deux partitions (Ceci est un exemple)
$Conf{RsyncArgs} = [
      '--numeric-ids',
      '--perms',
      '--owner',
      '--group',
      '--devices',
      '--links',
      '--specials',
      '--times',
      '--block-size=2048',
      '--recursive',
      '--one-file-system',
            ];
    $Conf{RsyncRestoreArgs} = [
      "--numeric-ids",
      "--perms",
      "--owner",
      "--group",
      "--devices",
      "--links",
      "--times",
      "--block-size=2048",
      "--relative",
      "--ignore-times",
      "--recursive",
      "--one-file-system",
      ];
     $Conf{RsyncLogLevel} = 1;

NB: l'option '--specials' donne la possibilité a rsync de copier des fichiers spéciaux des "non-device"

II- 4- Les cles ssh

Copions la clé ssh de l'utilisateur backuppc du serveur vers le client:

Première étape, si ce n'est pas déjà fait : créer les cl's de l'utilisateur backuppc sur le serveur de sauvegarde :

su backuppc
ssh-keygen -t dsa
cd /var/lib/backuppc/.ssh

Copier les cles sur le client

ssh-copy-id - i id_dsa.pub root@pc-pascal

Essayons à présent de nous connecter, depuis le serveur de sauvegarde (utilisateur backuppc) sur le client:

ssh root@pc-pascal

Finalement, lancer une sauvegarde complete ....

III- Restauration avec BackupPC

Apres un crash disque si on a une sauvegarde complète, on doit etre capable de restaurer un client très facilement:

  • Il faut avoir la table des partitions pour les recreer ( on prendra l'exemple du client pc-pascal ayant deux partitions le / et le /home)

  • J'ai fait des tests avec un « rescuecd » (je l'ai trouvé interessant car il contient tous les outils necessaires ssh, rsync, la famille fdisk, la possibilite de configurer le reseau....)' mais un CD debian-etch pourra etre utilise en mode rescue

  • démarrons le client avec le « RescueCD »

  • configurer l'interface réseau: net-setup eth0

  • Recréer les partitions (exemple en utilisant cfdsik cree le / et le /home )
  • Creer deux repertoire /mnt/target et /mnt/target/home (le target sera l'equivalent du / ) : mkdir –p /mnt/target/home

  • Monter les partitions :
  • mount –t ext3 /dev/sda1 /mnt/target

  • mount –t ext3 /dev/sda2 /mnt/target/home
  • Recuperer la cles ssh de backuppc a partir du serveur :
    ssh-copy-id - i id_dsa.pub root@pc-pascal
  • A partir de l'interface graphique, selectionner le client,
  • A partir de la derniere sauvegarde: choisir le client, selectionnez tous le fichiers et choisir «Restore the files below dir » on met « /mnt/target »
  • La restauration ne copie pas le /home qui est sur une partition differente, il faut la faire manuellement,
  • Pour restaurer « /home » on met dans “Restore the files below dir” “/mnt/target/home” et on fait “restore”

Après la restauration :

Sur le client , chrooter le /mnt/target

# chroot /mnt/target /bin/bash

Installer Grub: # grub-install hd0 (ou hd0 c’est le MBR du premier disque dur)

Sinon il faut on utilise la commande :

# find /boot/grub/stage1 alors elle retourne par exemple root(hd0,0) donc le dernier (0) c’est la première partition, si elle retourne root(hd0,2) le (2) indique la troisièmes partition.

Alors on exécute les commandes suivantes :

#grub root (hd0,?) #setup (hd0)

Si le Grub donne une erreur donc on peut essayer la commande suivante: grub-install --root-directory=/boot (hd0)

IV‐ Particularités

V-1 pour les serveurs virtuels (OpenVZ)

  • Il suffit donc de backupper les machines hôtes à 100%
  • En OpenVZ, la sauvegarde se fait sur le repertoire $Conf{RsyncShareName} = ['/var/lib/vz/root/xxx/'] qui contient l'image de la machine virtuelle et donc elle sera automatiquement sauvegarde au complet.

  • la restauration se fait en recuperant le fichier mentionne de la machine virtuelle

IV -2 Pour les systemes en LVM

La sauvegarde est pareille,Verifier l'existance du /boot au niveau de la sauvegarde dans le config.pl du client $Conf{RsyncShareName} = ['/','/home','/boot']; Pour la restauration complète du système en LVM on doit utiliser un RescueCD 1.1.4 qui support la création des partions LVM (Kernel 2.6..) Crée les partitions /boot en EXT3 et les autres partions LVM, les VL et les VG Crée un répertoire /mnt/target/boot et /mnt/target/home pour pouvoir restaurer les partition /boot et /home en tappant:

  • mkdir -p /mnt/target/boot
  • mkdir -p /mnt/target/home
  • mount -t ext3 /dev/sda1 /mnt/target/boot
  • mount /dev/testvg/root /mnt/target/
  • mount /dev/testvg/home /mnt/target/home

IV -3 Pour la sauvegarde d'un poste fixe ou portable

  • Pour un poste fixe : si c’est sous Mysql/NFS à ne pas backupper
  • Pour le reste poste fixe ordinaire ou portable, On ne backup pas les mp3, films...

IV - 4 Limiter l'accès de l'utilisateur backuppc a rsync uniquement au niveau du client

  • Sur le client on crée un script nommé "restrict-to-rsync" dans /root/.ssh/ ou on trouve la clé publique de backuppc dans le fichier "authorized_keys"
    # script "/root/.ssh/restrict-to-rsync"
    #!/bin/sh
    logfile=/root/.ssh/restrict-to-rsync.log
    case "$SSH_ORIGINAL_COMMAND" in
      *\&*|*\(*|*\{*|*\;*|*\<*|*\`*|*\|*)
        echo `date` "- SSH connection rejected" >> $logfile
        ;;
      rsync\ --server*)
        echo `date` "- SSH connection accepted" >> $logfile
        $SSH_ORIGINAL_COMMAND
        ;;
      *)
        echo `date` "- SSH connection rejected" >> $logfile
        ;;
    esac
  • Ensuite, éditez le fichier authorized_keys de sorte que la ligne devient:
    command = "/root/.ssh/restrict-to-rsync" ssh-dsa AAAAB3 ...
  • Est-ce qu'il ne suffirait pas plutôt de mettre directement ici command="/usr/bin/rsync --server" ? -- ProgFou

ZMO/Projets/BackupPC (dernière édition le 2009-02-17 21:56:45 par JeanChristopheAndré)