Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Newrsynclogo.png

Dans un article précédent (http://www.bloguelinux.ca/?p=149), j’explique comment configurer un serveur Samba servant à entreposer tous vos fichiers que vous jugez importants (ou non…). Maintenant que tous vos fichiers sont accessibles à partir d’un seul endroit, qu’arrivera t’il quand le disque dur de votre « serveur » Samba va rendre l’âme (et ce n’est pas une question de savoir si ceci va arriver ou non, mais bien QUAND ça va arriver)…

Afin d’éviter des pertes de données, plusieurs personnes utilisent un serveur avec des disques durs configurés en « RAID » 1 ou « RAID » 5. Dans un environnement « petit réseau à la maison »,  je considère le RAID 1 et RAID 5 un peu inflexible. Dans mon cas, ce que je désire surtout avoir, c’est une copie de sauvegarde de toutes mes données situées sur le disque dur de mon serveur et les copier à intervalle régulier sur un autre disque dur, cette copie pourrait être faite une fois par jour durant la nuit ou plus souvent selon le besoin. Ce qui est intéressant avec ce type de copie de sauvegarde, est qui si je fais une gaffe, je peux aller chercher la copie de sauvegarde sur l’autre disque dur. Puisqu’une configuration en RAID 1 (ou RAID 5) ne permet pas de récupérer l’ancienne version d’un fichier effacé ou modifié par erreur, l’utilisation de cette configuration est préférable selon moi. Croyez-moi quand je vous dis que ceci m’a souvent sorti du pétrin.

Pour ceux qui sont du type à porter la ceinture et les bretelles, il est aussi possible de rouler une configuration avec du RAID 1 et de faire un copie à intervalle régulier avec « rsync ». Donc par exemple, 2 disques durs en RAID 1 et un troisième disque servant de disque de sauvegarde journalière.

Dans mon cas, sur mon serveur Samba, j’ai installé 2 disques durs de 2 To et j’effectue avec la commande « rsync », une copie du disque dur qui sert d’hôte à mon lien de partage Samba vers un autre disque dur inaccessible via Samba (mais accessible directement par le serveur).

Ce qui est très intéressant avec la commande « rsync », c’est qu’elle est capable de reconnaître la différence entre le fichier source et sa copie (s’il existe déjà une copie du fichier original sur la destination) et de copier seulement les changements entre ces 2 fichiers, donc par exemple si vous copiez une nouvelle révision d’un fichier de 500 Ko par dessus le copie de l’ancienne révision et qu’un seul Ko à changé entre le fichier source et sa copie, seulement le contenu du Ko manquant sera copié entre la source et la destination. Imaginez à quel point ceci accélère le processus de copie (dans ce cas-ci). S’il s’agit d’une copie d’un nouveau fichier, un des paramètres que j’utilise avec la commande permet de compresser le fichier lors de la copie (le fichier destination ne sera compressé, ceci ne sert qu’au processus de copie) ce qui accélère de façon significative la copie pour les nouveaux fichiers.

J’ai donc configuré 2 « mount points », un nommé « data » et l’autre nommé « backup » et la commande « rsync » suivante se charge de copier dans son intégralité toutes les données du disque dur « data » vers le disque dur « backup », voici la commande que j’utilise pour effectuer cette copie journalière:

#rsync -avz –delete –exclude=documents/eric/fichiers_inutiles/ –stats /data/ /backup

Les paramètres « -avz » spécifient à « rsync » de copier tous les fichiers (« -a), d’afficher ce que « rsync » copie (« -v ») et de compresser le contenu durant la copie (« -z »).

Le paramètre:

« –delete » efface sur la destination, les fichiers qui n’existent plus sur la source
« –exclude » exclut le répertoire mentionné de la copie
« –stats » donne des données intéressantes à la fin du processus sur ce qui a été copié durant l’exécution de la copie.

Les 2 derniers paramètres sont la source et la destination respectivement, notez la barre oblique (le « slash ») finale pour la source qui est très importante à ne pas oublier.

Avant d’ajouter cette commande dans un crontab pour qu’elle s’exécute de façon automatique, il est bien sûr préférable de la tester à fond. Heureusement, il existe un paramêtre avec la commande « rsync » qui permet de faire exactement ceci, ajoutez le paramêtre « –dry-run » à votre commande et celle-ci vous montrera ce qui serais copié avec les statistiques et tous sans toutefois copier quoi que ce soit. Une fois que vous être satisfait du résultat, vous pouvez ajouter un simple script bash dans le répertoire « /etc/cron.daily », voici le contenu du script en question:

#!/bin/sh
rsync -avz –delete –exclude=documents/esauve/torrents/ –stats /data/ /backup > /var/log/rsync-daily.log 2>&1

Donnez au script un nom descriptif, du genre « rsync-journalier » et lui donner le droit d’exécution avec la commande :

#chmod a+x /etc/cron.daily/rsync-journalier

Maintenant, tous les fichiers (à l’exception de ceux que vous avez exclut) seront synchronisés entre vos disques durs de façon journalière et automatique. L’automatisation est un point crucial car c’est souvent la seule façon d’avoir la certitude que vos copies de sauvegardes seront bel et bien effectués parce qu’il y a peu de choses moins palpitantes que la routine des copies de sauvegardes.

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit