Mis-à-jour incrémentale de mon calepin
Le sam. 21 mai 2011
Avec Pelican, l'administration de mon blog a été sévèrement allégée. Ce qui l'était un peu moins, en revanche, c'était la mise-à-jour à la création d'un nouvel article. Quels fichiers ont été modifiés ? Quels fichiers envoyés ? Jusqu'alors, je ne me posais pas tellement de questions, j'envoyais, via ftp, la totalité des fichiers du blog. Point. Seulement voilà, à la longue, si à chaque nouvelle actualisation, je pratique l'envoi massif, d'article en article, l'opération risque fort de devenir ruineuse.
La solution la plus indiquée : une synchronisation incrémentale. Ce que rsync (remote synchronisation ou synchronisation distante) fait très bien. L'idéal aurait été, manifestement, de passer par le protocole SSH. Malheureusement, le serveur de mon hébergeur refuse ce type de connexion : This account is restricted by rssh. Allowed commands: sftp. Comme indiqué, il me faudra donc passer par le ftp.
CurlFtpFS permet de monter, sur son propre système de fichiers, un système de fichiers distant, par connexion ftp. Le montage du système de fichiers distant offre une très grande souplesse pour manipuler les données ; n'importe quelle application peut-être utilisée y compris rsync. Le tout exige, tout de même, quelques petits bidouillages que l'on trouve décrits très largement sur Internet — très souvent sans grande rigueur malheureusement.
# apt-get install curlftpfs
Normalement, le module de fuse est chargé. Une petite vérification :
# modprobe -l | grep fuse
Vérifiez que l'utilisateur appartient bien au groupe fuse :
$ groups
Si tel n'est pas le cas, ajoutez-le :
# usermod -a -G fuse utilisateur
Un p'tit bug (Ubuntu) non résolu sous Debian apparemment : pour que l'utilisateur apparaisse dans le groupe fuse, il est nécessaire de faire un p'tit reboot.
Ensuite, il faut créer un point de montage dans le répertoire /mnt (man hier) avec les droits qui vont :
# mkdir /mnt/ftpcalepin
# chmod a+w /mnt/ftpcalepin
Pour éviter d'inclure les paramètres de connexion dans la commande qui va monter le ftpfs, renseignez le fichier ~/.netrc (man netrc) comme suit (s'il n'existe pas... il faut le créer) :
machine votre_hôte
login votre_identifiant
password votre_mot_de_passe
Ne reste plus qu'à monter temporairement le ftpfs :
$ curlftpfs ftp://road2mayotte.org/calepin /mnt/ftpcalepin
Enfin, on synchronise avec rsync :
$ rsync --progress --recursive --update --delete --force <source_dir> <destination_dir>
Pour démonter le tout :
$ fusermount -u /mnt/ftpcalepin
Il est possible de monter automatiquement le ftpfs au démarrage si le réseau est actif au montage des partitions et que le fichier netrc est créé pour root.
Un petit script serait des plus pratiques.
N'hésitez à me faire vos commentaires par mail. Adresse ci-dessous.