J'ai ici un ordinateur «fixe», actuellement sous Debian mais plus pour très longtemps à mon avis (on en reparlera...), qui sert accessoirement de serveur de toute sorte. Et deux portables (un à moi, un à Amélie). Et nos données, surtout en ce qui concerne le boulot, sont importantes... Donc on sauvegarde. Enfin, plutôt devrai-je dire : nos ordis sauvegardent tous seuls nos données ! :)

La solution que j'ai trouvée, c'est un script bash, lancé automatiquement par cron, qui utilise rsync.
Voilà le script, que j'ai simplement appelé sauvegarde :
$ cat /usr/local/bin/sauvegarde

#!/bin/sh
echo -n "Dernière sauvegarde effectuée le" > /home/login1/.rsync.log
date '+ %A %d %B %Y à %T' >> /home/login1/.rsync.log
rsync -vruLpogt --delete --delete-excluded --exclude=*.ies4linux* --exclude=*.wine* --exclude=*Cache* --exclude=.thumbnails* --exclude=.aptitude* --exclude=*lock --ignore-errors /home/login/ login2@serveur:. >> /home/login1/.rsync.log

Les paramètres de exclude sont modifiables à votre guise... login1 est mon login sur le portable, login2 sur le serveur. Chez moi ils sont identiques (c'est plus simple), mais ce n'est pas obligatoire.

Pour que cela fonctionne, écrire ce fichier ne suffit pas. Il faut (ça paraîtra évident à «ceux qui savent») :

  • donner le droit d'exécution sur le script. Sur le portable : sudo chmod +x /usr/local/bin/sauvegarde
  • que rsync soit installé sur les deux machines. C'est un logiciel de synchronisation qui utilise des connections sécurisées ici. Son principal avantage est de n'envoyer que les fichiers qui ont été modifiés depuis la fois précédente. Pour l'installer, il suffit de faire sur chaque machine sudo aptitude install rsync

Plus complexe, il faut aussi que l'on puisse se connecter en ssh sans rentrer le mot de passe. Par clé, quoi. Pour cela, sur le portable, je tape ssh-keygen -t dsa, ce qui génère les fichiers /home/login1/.ssh/id_dsa et /home/login1/.ssh/id_dsa.pub. id_dsa.pub, c'est la clé publique, celle que l'on partage avec les autres, celle qui fait qu'ils peuvent nous identifier. C'est un fichier qui contient une seule ligne. id_dsa, c'est la clé privée, celle qui ne doit jamais sortir. Sur serveur, il faut donc que le contenu de id_dsa.pub soit sur une ligne dans un fichier /home/login2/.ssh/authorized_keys.
Là où ça se complique, c'est que comme tout sera synchronisé, le fichier serait effacé si on ne l'avait pas sur le portable... D'où, tout simplement, sur le portable :

cat /home/login/.ssh/id_dsa.pub >> /home/login/.ssh/authorized_keys

Et ensuite, on envoie tout ça sur serveur :

scp -r /home/login1/.ssh login2@serveur:.

Il ne manque maintenant plus qu'une chose : que le script se lance automatiquement. Là, c'est cron entre en jeu. Il stocke les commandes qu'il lance et la périodicité dans un fichier inaccessible directement, mais on peut avoir la liste par crontab -l, supprimer toutes les commandes par crontab -r et éditer le fichier par crontab -e. Chaque utilisateur a sa crontab et ne peut accéder aux autres.
S'ouvre alors un éditeur de texte. Votre fichier doit ressembler au final à :
$ crontab -e

SHELL=/bin/sh
USER=login1
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games
0 5    * * *  sauvegarde

sauvegarde sera alors lancé toutes les minutes «zéro» de la cinquième heure de chaque jour. Une étoile représente un «chaque», et après minutes et heures nous avons jour de la semaine (de 0 à 7), jour du mois et mois. C'est relativement simple, non ?

Vous n'avez donc plus d'excuse pour ne pas faire attention à vos données !