Différences entre versions de « Sauvegarde incrémentielle »

De Cliss XXI
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
imported>SylvainBeucler
Ligne 72 : Ligne 72 :
 
* Une seule sauvegarde à la fois:
 
* Une seule sauvegarde à la fois:
 
  $Conf{MaxBackups} = 1;
 
  $Conf{MaxBackups} = 1;
 +
* Interface web en français:
 +
$Conf{Language} = 'fr';
  
 
Liens:
 
Liens:

Version du 4 juillet 2007 à 15:21

Méthode 1 - Archives

Nous utilisons rsync pour faire une copie directe, puis dar pour réaliser des sauvegardes incrémentielles, pilotées par SaraB, avec des checksums par2.

L'inconvénient de la méthode 'dar' est qu'il est fastidieux de récupérer des fichiers dans de grosses archives, et plus encore s'il y a un grand nombre de sauvegardes incrémentielles entre chaque sauvegardes complètes. Du coup il est tentant de faire plus souvent de sauvegardes complètes, et qui impacte l'espace disque.

Méthode 2 - Copies en liens durs

Utiliser cp -al pour faire une sauvegarde complète à base de liens durs. La solution combine les avantages d'une sauvegarde incrémentielle (espace disque réduit) et d'une sauvegarde complète (accès à tous les fichiers sans devoir fusionner les sauvegardes incrémentielles intermédiaires). On ne fait que des sauvegardes "incrémentielles", ce qui est très appréciable du point de vue de la simplicité et de l'espace disque occupé.

Variante: l'option --link-dest=DIR de rsync (avec cp -al les changements de permissions ou de propriétaire d'un fichier s'appliquent sur toutes les sauvegardes, et non sur _la_ sauvegarde impactée).

Les inconvénients sont:

  • Beaucoup plus d'espace utilisé en inodes (prévoir mkfs.ext3 -T news si possible).
  • De nombreux fichiers à la place d'une seule archive.
  • Pas de combinaison avec parchive, par2 ou autre outil de parité; et ce, couplé avec une réutilisation des fichiers: si un fichier est stocké sur un secteur défectueux, et qu'il n'a pas changé au cours du temps, ce fichier est donc définitivement perdu. Combiner peut-être avec l'option --checksum de rsync afin d'avoir des vérifications régulières?
  • Un espace incompressible utilisé à chaque sauvegarde, mais relativement léger (compter 50M pour 60Go, d'après cp -al backup/ backup.copy/ && du -sch backup/ backup.copy/).
  • Occupation de l'espace disque moins intuitif, car partagé entre les sauvegardes.

Il existe plusieurs outils qui utilisent ce principe:

Liens

rdiff-backup

Copie miroir + copies incrémentielles via un format spécifique (dossier spécial rdiff-backup-data/). Suppression des anciennes sauvegarde uniquement par date (--remove-older-than). L'avantage par rapport à rsync est qu'il s'agit d'une solution tout-en-1, une seule commande suffit pour la sauvegarde et les incréments. Il peut aussi stocker un système complet sans avoir besoin d'être root, les méta-données étant alors utilisées pour la restoration.

BackupPC

Copies par liens en dur sur l'ensemble des sauvegardes, même provenant de systèmes différents (indexation par checksum, à la git). Stockage à part des meta-données, telles que les permissions (le serveur ne tourne pas sous root). Par conséquent, le format des sauvegarde spécifique à backuppc, pas utilisable directement. Il y a également un panneau de contrôle web.

BackupPC ping les machines à sauvegarder une fois à chaque réveil du démon (1/heure) (jusqu'au premier contact), et à chaque sauvegarde incrémentielle (jusqu'à défaut de ping). Les machines ping-ées plusieurs fois consécutivement sont considérées comme permanentes et ne sont pas sauvegardées pendant les heures d'affluence (blackout).

La sauvegarde peut se faire via smb, rsyncd, ssh+rsync ou ssh+tar.

Pour ssh+rsync, je recommande la restriction d'accès simple suivante (lecture seule):

  • Méthode rsync
$Conf{XferMethod} = 'rsync';
aptitude install libfile-rsyncp-perl
  • ~/.ssh/authorized_keys
# BackupPC
no-port-forwarding,no-x11-forwarding,no-agent-forwarding,no-pty,command="/root/remote_backup.sh" ssh-dss AAAAB...== root@backupmaster
  • ~/remote_backup.sh
#!/bin/bash
exec nice -n 19 rsync --server --sender ${SSH_ORIGINAL_COMMAND#*rsync }
  • Permissions:
chmod 755 ~/remote_backup.sh

Variante avec sudo:

  • /var/lib/backuppc/pc/myhostname/config.pl:
$Conf{RsyncClientCmd} = '$sshPath -q -x -l myuser $host $rsyncPath $argList+';
  • /etc/sudoers:
Defaults env_keep=SSH_ORIGINAL_COMMAND
myuser  ALL=NOPASSWD: /root/remote_backup.sh
  • ~/.ssh/authorized_keys:
...,command="sudo /root/remote_backup.sh" ssh-dsh ...

Note: cela désactive évidemment les possibilités de restauration directe (nécessite des droits en écriture).

La FAQ propose une méthode similaire avec un utilisateur dédié + sudo.

Quelques trucs divers:

  • Configuration spécifique à un ordinateur: /var/lib/backuppc/hôte/config.pl
  • Exclusions pour un système GNU/Linux:
$Conf{BackupFilesExclude} = ['/dev/pts/*', '/dev/shm/*', '/proc/*', '/sys/*', '/tmp/*', '/media/*/*', '/mnt/*/*'];
  • Cache des checksums rsync: décommenter la ligne '--checksum-seed=32761',.
  • Une seule sauvegarde à la fois:
$Conf{MaxBackups} = 1;
  • Interface web en français:
$Conf{Language} = 'fr';

Liens:

Bacula

"Backup Dracula"

À creuser...