En utilisant wget chercher récursivement un répertoire avec des fichiers arbitraires dans ce

voix
441

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 maintenir leur structure actuelle. Par exemple, le répertoire distant ressemble à:

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

.vim détient plusieurs fichiers et répertoires. Je veux répliquer que sur le client en utilisant wget. Peut sembler ne pas trouver la bonne combinaison des drapeaux wget pour y parvenir. Des idées?

Créé 07/11/2008 à 22:44
source utilisateur
Dans d'autres langues...                            


12 réponses

voix
753

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

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

Pour éviter de télécharger les générés automatiquement les index.htmlfichiers, utilisez la -R/ --rejectOption:

wget -r -np -R "index.html*" http://example.com/configs/.vim/
Créé 07/11/2008 à 22:55
source utilisateur

voix
105

Pour télécharger un répertoire récursive, qui rejette les fichiers index.html * et 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
Créé 17/03/2011 à 07:17
source utilisateur

voix
101

Pour quelqu'un d' autre que d' avoir des problèmes similaires. Wget suit robots.txtqui pourrait ne pas vous permettre de saisir le site. Pas de soucis, vous pouvez désactiver:

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

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

Créé 22/11/2012 à 21:36
source utilisateur

voix
30

Vous devez utiliser le -m (miroir) drapeau, comme qui prend soin de ne pas salir avec horodatages et indéfiniment RECURSE.

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

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

wget -m -e robots=off --no-parent http://example.com/configs/.vim/
Créé 24/02/2014 à 10:21
source utilisateur

voix
28

Voici la commande wget complète qui a fonctionné pour moi de télécharger des fichiers à partir du répertoire d'un serveur (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/
Créé 15/02/2013 à 13:26
source utilisateur

voix
5

Si --no-parentne pas aider, vous pouvez utiliser l' --includeoption.

struct Répertoire:

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

Et vous voulez télécharger , downloads/goodmais pas le downloads/badrépertoire:

wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good
Créé 16/05/2013 à 13:39
source utilisateur

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

travaille pour moi.

Peut-être vous avez un .wgetrc qui interfère avec elle?

Créé 07/11/2008 à 22:49
source utilisateur

voix
3

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

wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/
Créé 21/10/2014 à 04:32
source utilisateur

voix
2

Wget 1,18 peut mieux fonctionner, par exemple, je me suis mordu par une version 1.12 bug ...

wget --recursive (...)

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

Solution a été de remarquer quelques redirections 301 et essayer le nouvel emplacement - compte tenu de la nouvelle URL, wget a tous les fichiers dans le répertoire.

Créé 28/02/2017 à 05:42
source utilisateur

voix
1

Tout ce que vous avez besoin est deux drapeaux, l' un est "-r"pour 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 tout. Il téléchargera dans l'arbre local suivant: ./example.com/configs/.vim. Toutefois , si vous ne voulez pas que les deux premiers répertoires, puis utilisez le drapeau supplémentaire --cut-dirs=2tel que 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, je suis 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 l' article 4.3.

Créé 02/03/2018 à 06:32
source utilisateur

voix
1

Cette version télécharge récursive et ne crée pas les répertoires parents.

wgetod() {
    NSLASH="$(echo "$1" | perl -pe 's|.*://[^/]+(.*?)/?$|\1|' | grep -o / | wc -l)"
    NCUT=$((NSLASH > 0 ? NSLASH-1 : 0))
    wget -r -nH --user-agent=Mozilla/5.0 --cut-dirs=$NCUT --no-parent --reject="index.html*" "$1"
}

Usage:

  1. Ajouter à ~/.bashrcou coller dans le terminal
  2. wgetod "http://example.com/x/"
Créé 18/10/2017 à 23:31
source utilisateur

voix
1

Vous devriez être en mesure de le faire en ajoutant simplement un -r

wget -r http://stackoverflow.com/
Créé 07/11/2008 à 22:50
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more