cron + rsync : l’assurance de la sauvegarde de vos données

Bonjour,
La plus grande peur en informatique est la perte de données. Pour s’en prémunir, le plus sûr est bien entendu de copier à intervalles réguliers ces données à sauvegarder sur un support externe.

Dans la suite de ce billet (et comme dans les suivants d’ailleurs), je vais faire l’hypothèse que vous êtes familier de l’usage du terminal et que vous connaissez les commandes UNIX de base (cp, mkdir, ls etc.). S’il n’en était pas le cas, je vous inviterais à lire l’excellent tutoriel à ce propos sur le Site Du Zéro.

 

A propos du support externe

Les supports de sauvegarde ont normalement une fiabilité suffisante pour que la probabilité d’un crash commun de votre ordinateur ET de votre support de stockage puisse être considérée nulle. Par contre, beaucoup trop de gens ne pensent pas que faire sa sauvegarde sur clé USB puis mettre ladite clé dans la sacoche de l’ordinateur est stupide. Ou alors en cas de vol à la tire, il vous faudra être persuasif pour demander à votre ravisseur de vous laisser au moins la clé… De plus, si l’ordinateur est généralement protégé par mot de passe, c’est rarement le cas des supports USB.

Donc à choisir, je vous conseille un disque externe qui reste sur le bureau. Sinon, le top en matière de surreté reste le stockage en ligne, ou Cloud Computing (qui n’a pas été inventé par S. Jobs…). Je pense (entre autres) à DropBox ou UbuntuOne. Leur fiabilité est en effet sans équivoque (double écriture, copie décentralisée etc.).
Dans le même genre mais un peu moins radical, vous pouvez sauvegarder vos données sur un autre ordinateur s’il dispose d’un serveur SSH ou FTP (je vous parlerai du cas SSH dans quelques lignes).

Rsync : la synchronisation unidirectionnelle

rsync est un logiciel de synchronisation de fichier unidirectionnel, en ce sens qu’il travail depuis un dossier source vers un dossier destination. Quelle différence avec cp (ou scp) ? Il ne s’em***** pas à copier les fichiers déjà existants et à jour (même date de modification), d’où un gain de temps.

La syntaxe est simple :

rsync source/ destination/

Mais si vous voulez synchroniser un dossier, il vous faut ajouter l’option de récursivité :

rsync -r source/ destination/

Copier le dossier ou son contenu ?

Il est important de noter que la présence ou non du slash à la fin de l’adresse de source sur joue sur le comportement de la commande : avec le slash (comme dans l’exemple ci-dessus), c’est le contenu du dossier ‘source’ qui sera copié dans le dossier ‘destination’ ; sans, c’est le dossier lui-même (ainsi que son contenu) qui sera copié.

Une des puissances de rsync est de pouvoir fonctionner en ssh. Si vous voulez synchroniser le dossier source sur le dossier destination, au nom de login sur le serveur serveur, vous devrez entrer :

rsync -avz source/ login@serveur:destination/

L’option ‘a’ signifie archivage, elle inclut donc la récursivité (pas besoin de -r). ‘v’ pour les curieux qui veulent un rapport quant au transfert et ‘z’ pour compresser les fichiers, histoire de ne pas manger toute le bande passante.

Interface graphique

Il existe une interface graphique, basée sur GTK2 pour rsync, qui s’appelle sobrement Grsync. Vous pouvez bien sûr vous en servir pour lancer vos synchros, mais aussi pour simplement trouver la commande complète avec toutes les options qui vont bien.

Création d’un Alias

Si vous trouvez la commande pénible à rentrer, mais que vous souhaitez lancer vous-même les synchros, vous pouvez créer un alias. Pour cela, éditez le fichier .bashrc qui se situe dans votre dossier utilisateur (pas besoin donc d’être en root pour ça). Supposons que vous vouliez appeler « synchro » la commande qui fait un rsync de votre dossier /home/user/Documents/These/ vers /media/DDexterne/BackupTh/, ça donnera :

alias synchro="rsync -a /home/user/Documents/These/ /media/DDexterne/BackupTh/"

En rajoutant cette ligne à la fin du bashrc, vous n’aurez plus qu’à taper « synchro » dans un terminal pour faire une sauvegarde du dossier These sur le disque externe.

Automatisation complète avec une CRON

cron est un utilitaire qui permet d’automatiser des commandes, avec une fréquence définie par l’utilisateur. Pour éditer la table de cron, il faut lancer la commande

crontab -e

Puis déplacer le curseur jusqu’à la dernière ligne du fichier pour y rentrer les paramètres de la nouvelle entrée cron. Si je reprends l’exemple ci-dessus et que je veux que cette opération s’exécute toutes les heures, ça s’écrira comme ça :

* */1 * * * rsync -a /home/user/Documents/These  /media/DDexterne/BackupTh/

La première partie de la commande spécifie la date d’exécution de la commande dans l’ordre suivant : minute, heure, jour du mois, mois et jour de la semaine. Une étoile * signifie « tout le temps » tandis que le slash signifie « toutes les ». Si vous voulez plus d’informations sur les cron, je vous invite à consulter cette page ou celle-ci. Pour ceux qui ne seraient pas familiers des raccourcis clavier dans le terminal, les commandes en bas de l’écran de cron -e sont accessibles par combinaison de la touche Ctrl et de la touche correspondante (ex : ^A se lance en tappant [Ctrl]+[A]).

Pour voir si vous avez bien réussi à entrer la nouvelle cron, un petit

cron -l

permet de lister toutes les entrées cron.

 

Avec ça, vous ne devriez plus être dans la crainte de perdre le moindre document sensible.
Bonne synchro !