Sauvegardes automatiques avec rsync

Nous sommes tous assez paresseux et la procrastination est bien souvent un domaine dans lequel chacun excelle. C’est pour cette raison que même lorsque nous avons fait la démarche d’acheter un disque dur pour sauvegarder ses documents, en pratique, ces sauvegardes sont tout sauf régulières. Et malheureusement, c’est souvent après un crash d’un disque dur que l’on se pose des questions… Too late! La solution ? L’automatisation !!

Il y a mille et une réponse à cette problématique, dropbox et j’en passe. Mais si nous faisions ça de manière un peu plus manuelle, avec sa propre solution faite maison ?

Ma solution est à base de Linux (ou d’Unix), donc elle marche sur Linux, OSX et freeBSD. Pour ceux qui sont sous Windows, vous n’avez cas franchir le pas, Linux est votre ami ! Ce sera en plus l’occasion de récupérer un vieux PC pour en faire un serveur de sauvegarde.

Comment ça marche ? Très simple, on a d’un côté notre ordinateur de travail, de l’autre un serveur Linux. On utilise donc rsync pour faire une sauvegarde incrémentale, le tout étant lancé par cron à intervalles réguliers. On peut donc choisir l’intervalle de sauvegarde, et l’endroit de cette sauvegarde. En ce qui me concerne, je fais ça chez moi, c’est plus rapide sur le réseau local, mais il est tout à fait possible d’envoyer ça sur un serveur distant.

#!/bin/bash
result=`/sbin/ping -c 1 192.168.0.25 | sed -n '/packets transmitted/p' | cut -d ',' -f 2`;

# selon les versions/distributions le message peut changer
# comme l'indique Cyrille en commentaire, 
# il lui a fallu remplacer "1 packets received" par "1 received"
if [ "$result" == " 1 packets received" ]
then
    rsync -arv /Users/Buzut/Documents/ buzut@192.168.0.25:backup --delete
fi

On commence donc par faire un ping à l’adresse de destination. Ici, c’est une ip locale, donc si l’ordinateur sur lequel vous utilisez ce script est un portable, il est possible qu’il y ait une machine à cette adresse sur un autre réseau que chez vous. Cependant, ça limite les tentatives inutiles et c’est 100% fiable si la machine est distante car une ip publique est unique au monde (sauf anycast mais bon…).

Ensuite, si le serveur ping, on synchronise nos dossiers avec ce dernier. Même s’il y a une machine sur un réseau auquel je suis connecté qui n’est pas mon serveur, je ne pourrai pas m’y connecter car mes identifiants ne seront pas valides. Je précise aussi que rsync transfert les données via ssh, donc que tout est chiffré.

Je sauvegarde ici le dossier « Documents » de mon répertoire personnel, mais rien n’empêche de ne sélectionner que quelques dossiers, ou au contraire tout un disque dur !

Dernier petit détail, on utilise ici un certificat ssh, ça nous permet de nous connecter automatiquement au serveur sans avoir à entrer le mot de passe à chaque fois et c’est plus sécurisé que ces derniers.

Et vous, les sauvegardes ça se passe comment ?

Déjà 4 réponses, rejoignez la discussion !

  • Cyrille

    dit  :

    Bonjour,
    Dans votre script, j’ai du comparer avec « 1 received » plutôt que « 1 packets received ».
    Est-ce du à une différence de distribution ? Ou bien une évolution de la réponse du ping ? Ou une erreur ? …

    Sinon votre blog est intéressant, bonne continuation.

    • Buzut

      dit  :

      Bonjour Cyrille,

      Merci de ton commentaire. En effet j’avais mis ça en place pour un mac. Il y a des chances que le message varie en fonction des distributions et des versions utilisées. Je vais compléter avec ton retour d’expérience.

      Merci également pour le compliment.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *