Vous savez que depuis des années, j'essaye de maintenir à peu près à jour un lifestream chez free, à partir de mes contributions sur Wordpress, Shaarli, Goodreads, ... J'ai un gros bout de code Java qui génère le site web localement (assez lentement, mais ça n'est pas grave pour l'instant). Mais jusqu'à aujourd'hui, j'avais un autre problème au moins aussi pénible : l'upload sur ftpperso.free.fr. J'utilisais WinSCP et son mode de synchronisation, mais d'une part c'était très lent, et surtout, WinSCP semble ne pas être capable de bien gérer le maintien des connexions avec free.fr. Du coup, j'avais des tonnes de déconnexions. Un truc vraiment pénible.

Je savais bien que ça venait en partie du fait que j'envoyais quelques milliers de petits fichiers, plutôt que quelques gros fichiers. Alors en réfléchissant un peu, je me suis dit que je pourrais envoyer un ZIP que je dézipperai sur le serveur. Par exemple, ce script PHP permet de dézipper localement un fichier. Malheureusement, la version de PHP disponible sur free.fr n'inclut pas le support des fichiers ZIP. Du coup je me retrouve avec des messages d'erreurs pénibles : "Your PHP version does not support unzip functionality.". Bref, ça ne marche pas.

Alors, en désespoir de cause, je me suis dit que je pouvais revenir aux fondamentaux. Le fondamental du client ftp, c'est évidement lftp. Et donc, en cherchant un peu, je suis tombé sur ces exemples de commande lftp. Et en particulier sur cette commande, qui répondait bien à mon besoin : mirror -R.

Résultat ? C'est un poil plus rapide :

lftp nicolas.delsaux@ftpperso.free.fr:/lifestream> mirror -R
Total: 141 directories, 2681 files, 0 symlinks
New: 25 files, 0 symlinks
Modified: 1487 files, 0 symlinks
123219275 bytes transferred in 7127 seconds (16.9 KiB/s)
To be removed: 399 directories, 11059 files, 0 symlinks

Evidement, 7127 secondes, ça paraît long (ça fait 1 heure, 58 minutes, 47 secondes). Bon, ça paraît long, mais au moins, ça marche (parce que les transferts avec WinSCP avaient une sale tendance à planter au bout d'une heure). Autrement dit, ça marche bien mieux !