Question Utiliser wget pour récupérer récursivement un répertoire contenant des fichiers arbitraires


J'ai un répertoire Web où je stocke des fichiers de configuration. Je voudrais utiliser wget pour extraire ces fichiers et conserver leur structure actuelle. Par exemple, le répertoire distant ressemble à:

http://mysite.com/configs/.vim/

.vim contient plusieurs fichiers et répertoires. Je veux reproduire cela sur le client en utilisant wget. Vous ne pouvez pas trouver le bon combo de drapeaux wget pour que cela soit fait. Des idées?


455
2017-11-07 21:44


origine


Réponses:


Vous devez passer le -np/--no-parent option à wget (en plus de -r/--recursive, bien sûr), sinon il suivra le lien dans l'index du répertoire sur mon site vers le répertoire parent. Donc, la commande ressemblerait à ceci:

wget --recursive --no-parent http://example.com/configs/.vim/

Pour éviter de télécharger le fichier généré automatiquement index.html fichiers, utilisez le -R/--reject option:

wget -r -np -R "index.html*" http://example.com/configs/.vim/

770
2017-11-07 21:55



Pour télécharger un répertoire de manière récursive, qui rejette les fichiers index.html * et les téléchargements sans le nom d'hôte, le répertoire parent et la structure du répertoire entier:

wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data

107
2018-03-17 06:17



Pour quelqu'un d'autre qui a des problèmes similaires. Wget suit robots.txt ce qui pourrait ne pas vous permettre de saisir le site. Pas de soucis, vous pouvez l'éteindre:

wget -e robots=off http://www.example.com/

http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html


104
2017-11-22 20:36



Vous devriez utiliser le drapeau -m (miroir), car il prend soin de ne pas jouer avec les horodatages et de se répéter indéfiniment.

wget -m http://example.com/configs/.vim/

Si vous ajoutez les points mentionnés par d’autres dans ce fil, ce serait:

wget -m -e robots=off --no-parent http://example.com/configs/.vim/

30
2018-02-24 09:21



Voici la commande wget complète qui a fonctionné pour moi pour télécharger des fichiers à partir du répertoire d'un serveur (en ignorant robots.txt):

wget -e robots=off --cut-dirs=3 --user-agent=Mozilla/5.0 --reject="index.html*" --no-parent --recursive --relative --level=1 --no-directories http://www.example.com/archive/example/5.3.0/

28
2018-02-15 12:26



wget -r http://mysite.com/configs/.vim/

travaille pour moi.

Vous avez peut-être un fichier .wgetrc qui interfère avec cela?


5
2017-11-07 21:49



Si --no-parent ne pas aider, vous pourriez utiliser --include option.

Structure du répertoire:

http://<host>/downloads/good
http://<host>/downloads/bad

Et vous voulez télécharger downloads/good mais non downloads/bad annuaire:

wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good

5
2018-05-16 12:39



Pour récupérer un répertoire de manière récursive avec le nom d'utilisateur et le mot de passe, utilisez la commande suivante:

wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/

3
2017-10-21 03:32



Wget 1.18 peut fonctionner mieux, par exemple, je me suis fait mordre par un bug de la version 1.12 où ...

wget --recursive (...)

... récupère uniquement index.html au lieu de tous les fichiers.

Contournement était de remarquer quelques redirections 301 et essayer le nouvel emplacement - étant donné la nouvelle URL, wget a obtenu tous les fichiers dans le répertoire.


2
2018-02-28 05:42



Vous devriez pouvoir le faire simplement en ajoutant un -r

wget -r http://stackoverflow.com/

1
2017-11-07 21:50