Retrouvez cet article dans : Linux Pratique 32
Dans cet article, nous allons vous apprendre comment mettre en place un serveur de sauvegardes incrémentales pour les données d'un petit réseau hétérogène.
1. LE BUT
Avez-vous déjà effacé par mégarde un fichier qui vous était cher ? Ou pire, lancé la commande2. LES INGREDIENTS
rsync: petit logiciel permettant de transférer des fichiers sur une machine distante, en synchronisant la cible avec la source.ssh: permet d'obtenir un shell sur une machine distante de façon sécurisée ; peut interagir avec rsync pour sécuriser les transferts de fichiers.Cron: démon permettant d'automatiser des tâches à effectuer à des intervalles de temps réguliers.
-  Liens " durs " (
cp -al) : petite astuce qui nous permettra de sauver beaucoup d'espace disque.
3. LES PRINCIPES
On parle de sauvegarde incrémentale lorsqu'on ne prend en compte, à chaque nouvelle sauvegarde, que les différences avec celle qui la précède. Le serveur de sauvegarde sera une machine dédiée qui contiendra une copie de l'ensemble des fichiers présents sur les différents clients du réseau (en tout cas des fichiers que l'on désire sauvegarder). Chaque client disposera, sur le serveur, d'un dossier nommé4.LA PRATIQUE
4.1 Mise en place du serveur
Par la suite, je me baserai sur la distribution Gentoo (http://www.gentoo.org/), mais tout ceci est bien entendu possible sur toute autre distribution Linux. Utiliser rpm ou apt-get à la place de emerge sur une Fedora ou une Debian par exemple. Adaptez les commandes selon votre distribution si nécessaire.
Première chose à faire : il faut passer en mode super utilisateur dans une fenêtre terminal ou une console. Puis vous devez commencer par installer ssh et faire en sorte que le démon ssh soit lancé à chaque démarrage de l'ordinateur :
# emerge openssh; emerge ssh # rc-update add sshd default # /etc/init.d/sshd startIl vous faut ensuite faire la même chose avec
# emerge rsync # rc-update add rsyncd default # /etc/init.d/rsyncd startPuis, il vous faut installer un gestionnaire de tâches automatisées comme
# emerge dcron # rc-update add dcron default # /etc/init.d/dcron start # crontab /etc/crontabMaintenant que les logiciels nécessaires à notre entreprise sont installés, il reste à configurer le disque dur de grande capacité pour qu'il soit en mesure de recevoir toutes les données des sauvegardes. On commence par créer une partition primaire de type
# fdisk /dev/hdb Command (m for help): n p 1 [ENTREE] [ENTREE] t 83 wRemarque : éventuellement, il vous faudra remplacer le
# mke2fs /dev/hdb1Notre disque est maintenant prêt à accueillir tous les dossiers et sous-dossiers nécessaires à la sauvegarde incrémentale des données de votre réseau. Toutes les données sauvegardées se trouveront dans des sous-répertoires de
# mkdir /mnt/backupOn monte la partition ainsi créée (sans rebooter l'ordinateur):
# mount /mnt/backupUtiliser aussi votre éditeur de texte favori (
/dev/hdb1 /mnt/backup ext2 auto,noexec,nouser,rw 0 0Cela permettra de monter automatiquement la partition
# groupadd guser1Ensuite, on crée un utilisateur nommé
# useradd -m -d /mnt/backup/user1 user1 -g guser1Et on définit son mot de passe (par exemple
# passwd user1 New UNIX password: backuppl2m Retype new UNIX password: backuppl2mOn efface quelques fichiers inutiles ajoutés par la commande
# rm /mnt/backup/user1/.*On met ensuite en place un ensemble de répertoires, ainsi que les droits et propriétaires à y associer pour assurer une sécurité optimale, c'est-à -dire pour que seul l'intéressé (et
# chgrp guser1 /mnt/backup/user1 # chown root /mnt/backup/user1 # chmod o-rwx /mnt/backup/user1 # mkdir /mnt/backup/user1/sauvegardes# mkdir /mnt/backup/user1/jour # mkdir /mnt/backup/user1/semaine # mkdir /mnt/backup/user1/mois # chmod -R o-rwx /mnt/backup/user1/ # chgrp -R guser1 /mnt/backup/user1/ # chmod g+w /mnt/backup/user1/sauvegardesOn crée aussi un dossier nommé
# mkdir /mnt/backup/user1/.ssh # chmod o+rx /mnt/backup/user1 # chgrp -R guser1 /mnt/backup/user1/.ssh # chmod g+w /mnt/backup/user1/.sshMaintenant, on automatise tout le processus de façon incrémentale. Nous allons faire en sorte, qu'une fois par mois, semaine puis jour, le contenu de chaque dossier (inférieur d'un point de vue chronologique) soit remonté d'un cran. Vous noterez l'utilisation de la commande
#! /bin/bash rm -rf /mnt/backup/user1/mois mv /mnt/backup/user1/semaine /mnt/backup/user1/mois mv /mnt/backup/user1/jour /mnt/backup/user1/semaine cp -al /mnt/backup/user1/sauvegardes /mnt/backup/user1/jour Puis, on fait un chmod u+x /etc/cron.monthly/user1m.cronOn crée le fichier
#! /bin/bash rm -rf /mnt/backup/user1/semaine mv /mnt/backup/user1/jour /mnt/backup/user1/semaine cp -al /mnt/backup/user1/sauvegardes /mnt/backup/user1/jour Puis, on fait un chmod u+x /etc/cron.weekly/user1w.cronOn crée le fichier
#! /bin/bash rm -rf /mnt/backup/user1/jour cp -al /mnt/backup/user1/sauvegardes /mnt/backup/user1/jourPuis, on fait un
# minute hour day month dayofweek command */15 * * * * test -x /usr/sbin/run-crons && /usr/sbin/run-crons 0 * * * * rm -f /var/spool/cron/lastrun/cron.hourly 0 5 * * * rm -f /var/spool/cron/lastrun/cron.daily 0 4 * * 1 rm -f /var/spool/cron/lastrun/cron.weekly 0 3 1 * * rm -f /var/spool/cron/lastrun/cron.monthlyLe format de chaque entrée est :
minute(1 Ã 60) heure(1 Ã 24) jour(1 Ã 31) mois(1 Ã 12) joursemaine(1 Ã 7) commandeLa commande
# crontab /etc/crontabRemarque : Vous pouvez changer le degré de finesse de vos sauvegardes en rajoutant par exemple un dossier pour chaque jour de la semaine et pour chaque mois de l'année. Il pourrait aussi être judicieux d'ajouter des quotas disque pour chacun des utilisateurs afin qu'ils ne grignotent pas votre disque de sauvegarde en quelques jours avec leurs photos et leurs vidéos !
4.2 Installation côté client
Pour les clients Linux
Créez, sur chaque poste client, le répertoire# chown user1 /home/backup # chgrp users /home/backupÀ partir de maintenant, vous copierez toutes les données (du poste client) que vous voulez sauvegarder dans
date > /home/user1/rsync.log rsync -e ssh -av --delete --hard-links --progress "/home/backup/" \ user1@BACKUP.domaine.com:./sauvegardes/ >> rsync.logRemplacez bien entendu
# chown user1 /usr/sbin/sauvegardes.cron # chgrp users /usr/sbin/sauvegardes.cron # chmod u+x /usr/sbin/sauvegardes.cronAinsi, à chaque fois que l'on voudra sauvegarder ses données, il suffira de lancer la commande
# cp /usr/sbin/sauvegardes.cron /etc/cron.dailyIl reste toutefois une dernière chose à faire. En effet, vous pouvez noter que le mot de passe pour se connecter par SSH à la machine BACKUP n'est pas présent dans le fichier sauvegardes.cron. Et il n'est pas souhaitable qu'il nous soit demandé tous les jours. A chaque fois la procédure de sauvegarde automatique se lance ! L'astuce est donc d'utiliser les clés privées et publiques de SSH de la façon suivante :
# ssh-keygen -t rsa (et appuyer 3 fois sur [ENTREE]) # cat ~/.ssh/id_rsa.pub | ssh user1@BACKUP.domaine.com 'cat - >> ~/.ssh/authorized_keys' # ssh root@BACKUP.domaine.com # chmod go-w /mnt/backup/user1/.ssh
Pour les clients Windows
Créez un dossier nommé@echo off set PATH=c:\PROGRA~1\cwRsync\bin date /T >>rsync.log time /T >>rsync.log rsync -e ssh -av --delete --progress "/cygdrive/c/Sauvegardes/" user1@BACKUP.domaine.com:./sauvegardes/ >> rsync.log echo TERMINERemplacez bien entendu
4.3 Accéder à ses fichiers sauvegardés
On espère ne pas en avoir besoin, mais on sera bien content d'avoir mis en place cette méthode le jour où un drame arrivera ! Sous Linux, vous pouvez utiliser sftp (ou scp) pour récupérer vos données, le plus simple étant d'utiliser Konqueror en tapant dans la barre d'adresse de ce navigateur :sftp://user1@BACKUP.domaine.comSous Windows, il faut installer SSH et SFTP (http://ftp.ssh.com/pub/ssh/SSHSecureShellClient-3.2.9.exe). Ensuite, on accède à ses données par SFTP sur
Retrouvez cet article dans : Linux Pratique 32





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.