Comment télécharger un répertoire entier et des sous-répertoires en utilisant wget?

143

J'essaie de télécharger les fichiers pour un projet en utilisant wget, car le serveur SVN pour ce projet ne fonctionne plus et je ne peux accéder aux fichiers que via un navigateur. Les URL de base pour tous les fichiers sont les mêmes que

http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/ *

Comment puis-je utiliser wget(ou tout autre outil similaire) pour télécharger tous les fichiers de ce référentiel, où le dossier "tzivi" est le dossier racine et il y a plusieurs fichiers et sous-dossiers (jusqu'à 2 ou 3 niveaux) en dessous?

code4fun
la source
3
Vous ne pouvez pas faire cela si le serveur n'a pas de page Web avec la liste de tous les liens vers les fichiers dont vous avez besoin.
Eddy_Em
1
connaissez-vous le nom des fichiers?
Karoly Horvath
non je ne connais pas le nom de tous les fichiers.J'ai essayé wget avec l'option récursive mais cela n'a pas fonctionné non plus.C'est parce que le serveur n'a pas de fichier index.html qui répertorie tous les liens internes.
code4fun
Avez-vous essayé l'option de mise en miroir de wget?
Tomasz Nguyen

Réponses:

193

Vous pouvez utiliser ceci dans shell:

wget -r --no-parent http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

Les paramètres sont:

-r     //recursive Download

et

--no-parent // Don´t download something from the parent directory

Si vous ne souhaitez pas télécharger l'intégralité du contenu, vous pouvez utiliser:

-l1 just download the directory (tzivi in your case)

-l2 download the directory and all level 1 subfolders ('tzivi/something' but not 'tivizi/somthing/foo')  

Etc. Si vous n'insérez aucune -loption,wget utilisera -l 5automatiquement.

Si vous insérez un, -l 0vous téléchargerez l'intégralité d'Internet, car vous wgetsuivrez chaque lien qu'il trouve.


la source
19
Super, donc pour simplifier pour le prochain lecteur: wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/était la réponse pour moi. Merci votre réponse.
isomorphismes
2
J'ai essayé la commande ci-dessus pour obtenir tous les fichiers, http://websitename.com/wp-content/uploads/2009/05mais tout ce que j'ai obtenu était un index.htmlfichier qui n'avait rien. Je ne peux pas comprendre ce que j'ai manqué.
Vivek Todi
@up: Notez que wget suit les liens, vous avez donc besoin d'une liste de répertoires;)
11
Je sais que c'est assez vieux. Mais ce que j'ai également trouvé utile, c'est le -e robots=offcommutateur. ;)
Matthias W.
2
Pourquoi ne pas supprimer le "J'ai oublié quelque chose d'important" et corriger la réponse ???
user1271772
16

Vous pouvez l'utiliser dans un shell:

wget -r -nH --cut-dirs=7 --reject="index.html*" \
      http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

Les paramètres sont:

-r recursively download

-nH (--no-host-directories) cuts out hostname 

--cut-dirs=X (cuts out X directories)
Rajiv Yadav
la source
4

utilisez la commande

wget -m www.ilanni.com/nexus/content/
lanni654321
la source
1

vous pouvez également utiliser cette commande:

wget --mirror -pc --convert-links -P ./your-local-dir/ http://www.your-website.com

afin que vous obteniez le miroir exact du site Web que vous souhaitez télécharger

baobab33
la source
1

Ce lien m'a donné la meilleure réponse:

$ wget --no-clobber --convert-links --random-wait -r -p --level 1 -E -e robots=off -U mozilla http://base.site/dir/

A travaillé comme un charme.

Nelinton Medeiros
la source
-1

Cela marche:

wget -m -np -c --no-check-certificate -R "index.html*" "https://the-eye.eu/public/AudioBooks/Edgar%20Allan%20Poe%20-%2"
Hiep Luong
la source