
Dans la mise en place de la sauvegarde des serveurs d'un site de production, il vaut mieux souvent avoir un serveur à part dédié à la sauvegarde des serveurs plutôt que chaque machine gère ses propres sauvegardes. Il est même préférable d'envisager au moins deux serveurs de sauvegarde centralisés, un des deux étant un serveur de sauvegarde redondant pour des questions de sécurité des données. Cette solution étant envisagée, elle implique par conséquent une sauvegarde en réseau.
Dans la mise en place de la sauvegarde des serveurs d'un site de production, il vaut mieux souvent avoir un serveur à part dédié à la sauvegarde des serveurs plutôt que chaque machine gère ses propres sauvegardes. Il est même préférable d'envisager au moins deux serveurs de sauvegarde centralisés, un des deux étant un serveur de sauvegarde redondant pour des questions de sécurité des données. Cette solution étant envisagée, elle implique par conséquent une sauvegarde en réseau.
Des outils commerciaux ou libres qui sont complets existent pour la sauvegarde en réseau. Arkeia ou Amanda, pour l'équivalent libre, sont plutôt performants. Arkeia est simple d'emploi et est configurable facilement via des interfaces graphiques. Amanda est plus difficile d'accès et se configure principalement via des fichiers de configuration, que ce soit pour la partie serveur (le serveur de sauvegarde) ou la partie cliente (sur chacun des serveurs à sauvegarder). Cependant la configuration du logiciel Amanda peut être rendue plus aisée via le logiciel web, webmin et l'installation du module adéquat.
Cependant les outils systèmes sous Linux permettent de réaliser des sauvegardes en réseau. C'est ce que nous allons voir dans cette partie.
Nous ne traitons pas ici des différents types de sauvegarde que sont la sauvegarde complète, la sauvegarde incrémentale et la sauvegarde différentielle.
La commande dump examine les fichiers sur un système de fichiers, elle détermine lesquels peuvent être sauvegardés et les copie sur un disque spécifique une bande ou tout autre medium de sauvegarde. Elle peut faire suivre à une sauvegarde complète des sauvegardes incrémentales.
La commande restore permet de réaliser la fonction inverse de la fonction dump; elle permet de restaurer une sauvegarde d'un système de fichiers. Des fichiers uniques ou des sous répertoires peuvent aussi être récupérés d'une sauvegarde complète ou partielle.
Il est à noter que l'utilisation de dump/restore sous GNU/Linux est spécifique aux systèmes de fichiers ext2 et ext3.
Dans le fichier de configuration des points de montage /etc/fstab, sur une ligne de paramétrage du montage d'une partition en ext2/ext3, le cinquième champ indique à l'utilitaire dump qu'il peut sauvegarder la partition.
Exemple: Extrait de la table de montage avec l'indicateur pour dump positionné à 1 sur l'hôte berder.
# <file system> <mount point> <type> <options> <dump> <pass> /dev/hda6 /home ext3 defaults 1 2
S'il y a un besoin de sauvegarde d'une partition ext2/ext3 par dump, il faut positionner ce champ à 1, pour les autres types de systèmes de fichiers il faut le positionner obligatoirement à 0 (dump ne convient plus).
Nous voulons sauvegarder la partition associée au point de montage /home sur un fichier de sauvegarde home_berder.dump sur le serveur gavrinis.
Sauvegarde complète de /home:
gavrinis:/data# touch home_berder.dump
berder:~# dump -O -f gavrinis:/data/home_berder.dump /dev/hda6
Restauration de la partition à partir de la sauvegarde:
berder:~# mkfs.ext3 /dev/hda6 berder:~# mount /home berder:~# cd /home berder:~# restore -r -f gavrinis:/data/home_berder.dump
La commande rsync permet de maintenir à jour la copie d'une arborescence de fichiers. L'atout majeur de rsync c'est que lorsque le besoin de réaliser à nouveau cette copie se fait sentir, seuls les fichiers modifiés seront remplacés sur la copie. Ceci est particulièrement avantageux lors d'une sauvegarde à distance afin d'optimiser la bande passante sur le réseau.
Après le synopsis de la commande nous allons voir deux cas de sauvegarde/restauration.
Remarque: voir page de man pour les compléments...
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC [DEST] rsync [OPTION]... SRC [SRC]... DEST rsync [OPTION]... [USER@]HOST::SRC [DEST] rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
Sur l'hôte berder nous avons l'utilitaire rsync et sur le serveur de sauvegarde gavrinis nous avons le démon (service) rsyncd qui est en activité.
Remarque: l'utilisation simple de rsync en réseau implique que la machine distante indiquée en paramètre ait un démon rsyncd en activité!
Sauvegarde du contenu de /home/user1 de berder sur gavrinis:
berder:/home# rsync -avz user1 gavrinis:/data/
Description de quelques options :
Il n'est pas obligatoire d'avoir le démon rsyncd en activité du coté serveur. Il suffit de pouvoir utiliser un shell distant et qu'il y ait la présence de la commande rsync sur la machine distante.
Pour le shell distant nous considérons sshd qui non seulement compense l'absence du démon rsyncd, mais permet aussi d'avoir un port ouvert en moins sur la machine distante ainsi qu'un transfert de données sécurisé entre les machines puisque crypté par ssh. Ce n'est plus une compensation, mais une plu-value.
Sauvegarde du contenu de /home/user1 de berder sur gavrinis via la commande ssh:
berder:/home# rsync -avz -e ssh user1 gavrinis:/data/
La commande d'archivage tar, seule ou combinée à d'autres commandes du système Linux, permet de faire de la sauvegarde à distance.
Nous allons voir trois cas distinct d'utilisation de la commande tar pour faire des sauvegardes via le réseau.
Les trois cas d'utilisation sont:
Remarque: voir la page de man pour plus de détails.
tar [ - ] A --catenate --concatenate | c --create | d --diff
--compare | r --append | t --list | u --update | x -extract --get
[ --atime-preserve ] [ -b, --block-size N ] [ -B, --read-full-
blocks ] [ -C, --directory RÉP ] [ --checkpoint ] [ -f, --file
[NOM_HÔTE:]F ] [ --force-local ] [ -F, --info-script F --new-
volume-script F ] [ -G, --incremental ] [ -g, --listed-incremental
F ] [ -h, --dereference ] [ -i, --ignore-zeros ] [ -j, -I, --bzip
] [ --ignore-failed-read ] [ -k, --keep-old-files ] [ -K, --start-
ing-file F ] [ -l, --one-file-system ] [ -L, --tape-length N ] [
-m, --modification-time ] [ -M, --multi-volume ] [ -N, --after-
date DATE, --newer DATE ] [ -o, --old-archive, --portability ] [
-O, --to-stdout ] [ -p, --same-permissions, --preserve-permissions
] [ -P, --absolute-paths ] [ --preserve ] [ -R, --record-num-
ber ] [ --remove-files ] [ -s, --same-order, --preserve-order ] [
--same-owner ] [ -S, --sparse ] [ -T, --files-from F ] [
--null ] [ --totals ] [ -v, --verbose ] [ -V, --label NOM ]
[ --version ] [ -w, --interactive, --confirmation ] [ -W, --ver-
ify ] [ --exclude FICHIER ] [ -X, --exclude-from FICHIER ] [
-Z, --compress, --uncompress ] [ -z, --gzip, --ungzip ] [
--use-compress-program PROG ] [ --block-compress ] [
-[0-7][lmh] ]
nomfichier1 [ nomfichier2, ... nomfichierN ]
répertoire1 [ répertoire2, ... répertoireN ]
Ici la plu-value est apporté par le montage de système de fichiers en réseau via le protocole NFS. Le système de fichiers distant est monté sur un point de montage en local. L'utilisation de la commande tar se fait ensuite comme si nous étions en local.
Exemple: Nous voulons sauvegarder tous les fichiers de user1 (répertoire /home/user1/) de la machine berder vers une archive home_user1_berder.tgz dans le répertoire /data de gavrinis.
berder:/home# tar zcvf - user1 | ssh gavrinis dd of=/data/home_user1_berder.tgz
La première partie de la commande tar zcvf - user1 permet d'archiver en mode compressé (gzip) le répertoire user1 vers la sortie standard "-". Le tout est envoyé via un pipe "|" à la commande ssh qui se connecte au serveur gavrinis (avec le même identifiant d'utilisateur que sous berder dans le cas présent!) pour exécuter la commande dd of=/data/home_user1_berder.tgz (qui prend la sortie de la commande tar comme fichier d'entrée).
La commande tar permet directement de sauvegarder à distance. Il suffit de l'indiquer dans l'argument associé à l'option -f utilisateur@machine:chemin.
Remarque: "utilisateur" n'est pas obligatoire s'il est le même que celui qui exécute la commande.
Exemple: Nous voulons sauvegarder tous les fichiers de user1 (répertoire /home/user1/) de la machine berder vers une archive home_user1_berder.tgz dans le répertoire /data de gavrinis.
berder:/home# tar zcvf gavrinis:/data/home_user1_berder.tgz user1
Les options de tar utilisées ici (pour rappel):
La vérification du contenu de l'archive se fait de cette façon:
berder:/home# tar ztvf gavrinis:/data/home_user1_berder.tgz
Option:
Enfin, pour restaurer le contenu de l'archive stockée sur gavrinis dans le répertoire courant de berder:
berder:/home# tar zxvf gavrinis:/data/home_user1_berder.tgz
Option: