J’ai depuis longtemps programmé la sauvegarde de machines en utilisant l’excellent rsync. Ce petit programme, qui se lance en ligne de commande, permet une copie (éventuellement différentielle, éventuellement avec compression, etc. – Cf man rsync -) entre des répertoires locaux, ou à travers un tunnel ssh, ou encore en utilisant le protocole natif réseau rsync (nécessite la présence d’un serveur rsync, qui s’obtient en lançant rsync comme démon).
Si cette technique est efficace pour faire une sauvegarde sur un périphérique USB, ou sur un serveur de sauvegarde dédié, ou sur un partage réseau (il suffit alors de monter un dossier en SMBFS ou en CIFS), elle peut sembler irréalisable pour sauvegarder un site Web. En effet, pour accéder aux répertoires d’un serveur Web, la plupart des fournisseurs d’accès ne fournissent souvent qu’un seul protocole : le FTP.
Aussi, il y a quelques mois (années ?), j’avais trouvé une solution : monter le répertoire FTP sur un dossier local. Il existait un projet qui permettait de réaliser cette opération : LUFS. Or, ce projet ne semble plus évoluer depuis… octobre 2003. Et hier, j’ai eu besoin de changer le noyau Linux de ma Xbox (qui tourne sous Xebian, qui me sert entre autre de serveur de sauvegardes) pour mettre en oeuvre un 2.6.16.53 (le noyau le plus récent pour lequel il existe un patch permettant d’intégrer les pilotes des périphériques propres à une Xbox). Aussi, difficile d’adapter (sans risque et sans sueur) un patch prévu pour les noyaux 2.4 développé en 2003 pour qu’il fournisse un filesystem à un nouyau 2.6 datant de 2007.
Or, pourquoi s’embêter alors qu’il existe une solution toute faite : depuis le noyau 2.6.11, il existe une API au noyau (nommée FUSE), qui permet d’ajouter un filesystem au niveau utilisateur. Si votre noyau est compilé avec cette option (ce qui est le cas sur les noyaux récents des distributions majeures), il vous suffit d’installer, sur les distributions de type debian, le paquetage curlftpfs (par un apt-get install curlftpfs). Dès lors, monter un dossier distant accessible via FTP devient un jeu d’enfant : curlftpfs ftp://mon.du-serveur.org/repertoire /repertoire/local -o user=mon_login_ftp:mot_de_passe_ftp
Un petit coup de rsync sur ce dossier monté, un petit démontage avec un simple umount /repertoire/local, et le tour est joué. Simple non ? (remarque : si cette technique vous permet de sauvegarder les fichiers, n’oubliez pas non plus de faire une sauvegarde de la base SQL).
Merci pour l’astuce 🙂