J'ai un répertoire Web où je stocke des fichiers de configuration. Je voudrais utiliser wget pour tirer ces fichiers vers le bas 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 répliquer cela sur le client en utilisant wget. Impossible de trouver le bon combo de drapeaux wget pour y parvenir. Des idées?
Pour télécharger un répertoire de manière récursive, ce qui rejette les fichiers index.html * et les téléchargements sans le nom d'hôte, le répertoire parent et toute la structure du répertoire:
la source
Pour toute autre personne ayant des problèmes similaires. Wget suit
robots.txt
ce qui pourrait ne pas vous permettre d'accéder au site. Pas de soucis, vous pouvez le désactiver:http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html
la source
Vous devez utiliser le drapeau -m (miroir), car cela prend soin de ne pas jouer avec les horodatages et de récurer indéfiniment.
Si vous ajoutez les points mentionnés par d'autres dans ce fil, ce serait:
la source
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
):la source
Sinon
--no-parent
, vous pouvez utiliser l'--include
option.Structure du répertoire:
Et vous souhaitez télécharger
downloads/good
mais pas ledownloads/bad
répertoire:la source
travaille pour moi.
Peut-être avez-vous un .wgetrc qui interfère avec lui?
la source
Pour récupérer un répertoire récursivement avec nom d'utilisateur et mot de passe, utilisez la commande suivante:
la source
Wget 1.18 peut mieux fonctionner, par exemple, j'ai été mordu par un bug de la version 1.12 où ...
... récupère uniquement index.html au lieu de tous les fichiers.
La solution de contournement consistait à remarquer quelques redirections 301 et à essayer le nouvel emplacement - étant donné la nouvelle URL, wget a obtenu tous les fichiers dans le répertoire.
la source
Tout ce dont vous avez besoin est de deux drapeaux, un
"-r"
pour la récursivité et"--no-parent"
(ou-np
) afin de ne pas aller dans le'.'
et".."
. Comme ça:wget -r --no-parent http://example.com/configs/.vim/
C'est ça. Il téléchargera dans l'arbre local suivant:
./example.com/configs/.vim
. Cependant, si vous ne voulez pas les deux premiers répertoires, utilisez l'indicateur supplémentaire--cut-dirs=2
comme suggéré dans les réponses précédentes:wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/
Et il téléchargera votre arborescence de fichiers uniquement dans
./.vim/
En fait, j'ai obtenu la première ligne de cette réponse précisément du manuel wget , ils ont un exemple très propre vers la fin de la section 4.3.
la source
L'option suivante semble être la combinaison parfaite en cas de téléchargement récursif:
wget -nd -np -P / dest / dir - récursif http: // url / dir1 / dir2
Extraits pertinents des pages de manuel pour plus de commodité:
la source
Vous devriez pouvoir le faire simplement en ajoutant un -r
la source
Cette version se télécharge récursivement et ne crée pas de répertoires parents.
Usage:
~/.bashrc
ou coller dans le terminalwgetod "http://example.com/x/"
la source