Utiliser wget pour télécharger des répertoires sélectionnés sur le serveur ftp

J’essaie de comprendre comment utiliser wget pour télécharger des répertoires spécifiques à partir d’un tas de sites ftp différents avec des données économiques du gouvernement américain.

Comme exemple simple, je sais que je peux télécharger un répertoire entier en utilisant une commande comme:

wget --timestamping --recursive --no-parent ftp://ftp.bls.gov/pub/special.requests/cew/2013/county/ 

Mais j’envisage d’exécuter des téléchargements plus complexes, où je pourrais vouloir limiter un téléchargement à une poignée de répertoires. J’ai donc regardé l’option –include. Mais je ne comprends pas vraiment comment cela fonctionne. Plus précisément, pourquoi cela ne fonctionne pas:

 wget --timestamping --recursive -I /pub/special.requests/cew/2013/county/ ftp://ftp.bls.gov/pub/special.requests/cew/ 

Ce qui suit fonctionne, dans le sens où il télécharge des fichiers, mais il télécharge bien plus que ce dont j’ai besoin (tout dans le répertoire 2013, contre seulement le sous-répertoire du comté):

 wget --timestamping --recursive -I /pub/special.requests/cew/2013/ ftp://ftp.bls.gov/pub/special.requests/cew/ 

Je ne peux pas dire si je ne comprends pas quelque chose à propos de wget ou si mon problème concerne quelque chose de plus fondamental pour les structures de serveur ftp.

Merci pour l’aide!

Basé sur ce document, il semble que les fonctions de filtrage de wget sont très limitées.

Lorsque vous utilisez l’option --recursive , wget télécharge tous les documents liés après avoir appliqué les différents filtres, tels que les options --recursive --no-parent et -I , -X , -A , -R .

Dans votre exemple:

 wget -r -I /pub/special.requests/cew/2013/county/ ftp://ftp.bls.gov/pub/special.requests/cew/ 

Cela ne téléchargera rien, car l’option -I spécifie d’inclure uniquement les liens correspondant à /pub/special.requests/cew/2013/county/ , mais sur la page /pub/special.requests/cew/ il n’y a pas de tels liens. , le téléchargement s’arrête là. Cela fonctionnera bien:

 wget -r -I /pub/special.requests/cew/2013/county/ ftp://ftp.bls.gov/pub/special.requests/cew/2013/ 

… car dans ce cas la page /pub/special.requests/cew/2013/ a un lien vers le county/

Btw, vous pouvez trouver plus de détails dans cette doc que sur la page de manuel:

http://www.gnu.org/software/wget/manual/html_node/

pouvez-vous simplement faire (et append le –timestamping / – no-parent etc. si nécessaire)

  wget -r ftp://ftp.bls.gov/pub/special.requests/cew/2013/county 

Le -I semble fonctionner à un niveau de répertoire à la fois, donc si nous montons d’un comté / nous pouvons faire:

  wget -r -I /pub/special.requests/cew/2013/county/ ftp://ftp.bls.gov/pub/special.requests/cew/2013/ 

Mais apparemment, nous ne pouvons pas aller plus loin et faire

  wget -r -I /pub/special.requests/cew/2013/county/ ftp://ftp.bls.gov/pub/special.requests/cew/