Est-il possible d'utiliser des caractères génériques dans les requêtes wget lors du téléchargement à partir de répertoires? En gros, j'ai un site, disons, www.download.example.com/dir/version/package.rpm
. Cependant, le répertoire des versions change tout le temps et contient parfois plusieurs packages RPM. Existe-t-il une seule requête wget qui ne me procurerait que tous les packages du répertoire version
sans savoir quelle est cette version? Dans mon monde idéal, la requête serait quelque chose comme:
wget www.download.example.com/dir/*/*.rpm
S'il existe un moyen de le faire avec curl
, cela fonctionnerait également.
Vous ne pouvez pas utiliser de caractères génériques dans wget
mais le -A
le drapeau devrait fonctionner. Depuis la page de manuel wget :
Vous souhaitez télécharger tous les gifs d'un répertoire sur un serveur http. Tu as essayé
wget http://www.server.com/dir/*.gif
, mais cela n'a pas fonctionné car la récupération http ne prend pas en charge la globalisation. Dans ce cas, utilisez:wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
Edit: a trouvé un question connexe
Concernant les répertoires:
Il existe un utilitaire appelé LFTP
, qui prend en charge la globalisation. Jetez un œil à la page de manuel . Il y a un autre question sur Linux et Unix qui couvre son utilisation dans un scénario similaire au vôtre.
Si vous pouvez trouver un modèle dans votre requête, vous pouvez utiliser l'extension d'accolade bash pour effectuer cette tâche.
Par exemple, dans votre cas, vous pouvez utiliser quelque chose comme:
wget www.download.example.com/dir/{version,old}/package{00..99}.rpm
Vous pouvez également combiner cela avec le -A
et -R
paramètres pour filtrer vos résultats.
Bien que le type de solution ci-dessus fonctionne, il échoue lorsque vous souhaitez simplement télécharger certains répertoires, mais pas tous. Par exemple si vous avez:
http://site.io/like/
http://site.io/like2/
http://site.io/nolike/
Au lieu de cela, mettez les noms de répertoire que vous voulez dans un fichier texte, par exemple: dirs.txt:
like/
like2/
Utilisez ensuite wget
avec les options de commande suivantes -i dirs.txt -B <base-URL>
ainsi:
wget -nH -nc -np -r -e robots=off -R "index.html*" -i dirs.txt -B http://site.io/
Depuis, je ne pense pas que vous puissiez utiliser des répertoires dans le -A
et -R
listes. (?)