Client FTP récursif avec Wget
Cet article n’est pas de moi mais il m’a été tellement utile que j’ai préféré en faire une copie !
Il me faut faire une moulinette infernale. Le travail consiste à récupérer récursivement une arborescence monstrueuse sur un serveur ftp avant de procéder à l’agrégation et au traitement des données.
D’ordinaire, pour un script complet allant de la récupération des données à leur intégration en base de données, j’aurais utilisé totalement Ruby. Je dis bien “j’aurais” car ce n’est pas le cas.
J’ai utilisé Ruby pour le traitement des fichiers et l’alimentation de la base mais, vu les limitations des fonctionnalités FTP imposées par Ruby, il me semblait beaucoup trop contraignant de perdre un temps fou, sur une chose aussi triviale, à triturer ce langage.
J’ai donc porté mon dévolu sur la commande wget qui fait parfaitement office de ftp récursif en… une ligne.
Descriptif des options utilisées :
- -r : récupération récursive de l’arborescence
- -P/home/demoi : Le répertoire (/home/demoi) dans lequel vont attérir les fichiers downloadés
- -nH/ : Désactive la génération de la racine des répertoires avec le nom de l’hôte. Par défaut, l’invocation de wget avec -r http://ftp.prout.fr/ crée une hiérarchie de répertoires avec ftp.prout.fr/ comme racine. L’option -nH désactive ce comportement.
- –cut-dirs=5 : Ignore 5 niveaux du répertoires distant pour la copie en local.
Maintenant, reprenons notre exemple pour illustrer l’utilisation des options -nH –cut-dirs=n. la récupération de “ftp://ftp.prout.fr/../../arbo/des/fichiers/*” donnerait :
- Sans option : ftp.prout.fr/../../arbo/des/fichiers/
- -nH : ../../arbo/des/fichiers/
- -nH –cut-dirs=1 : ../arbo/des/fichiers/
- -nH –cut-dirs=4 : fichiers/
Maintenant, examinons le comportement avec –cut-dirs sans -nH :
- –cut-dirs=4 : ftp.prout.fr/fichiers/
Et enfin, les informations de connexion
- –ftp-user</green> : le login ftp
- –ftp-password</green> : le mot de passe ftp
Pour plus d’infos, consultez la manpage de wget ou allez jeter un oeil ici.