Frage

Ich habe ein Web-Verzeichnis, in dem ich einige Konfigurationsdateien speichern. Ich mag wget benutzen, um die Dateien nach unten ziehen und ihre derzeitigen Struktur beizubehalten. Zum Beispiel sieht das Remote-Verzeichnis wie:

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

.vim hält mehrere Dateien und Verzeichnisse. Ich möchte, dass mit wget auf dem Client replizieren. Kann nicht scheinen, die richtige Kombination aus wget Flaggen zu finden dies getan. Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie haben die -np / --no-parent Option zu übergeben (zusätzlich / wget -r, natürlich) --recursive, sonst wird es den Link in dem Verzeichnisindex auf meiner Website des übergeordneten Verzeichnis folgen. So ist der Befehl würde wie folgt aussehen:

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

Um zu vermeiden, die automatisch generierten index.html das Herunterladen von Dateien, verwenden Sie die -R / --reject Option:

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

Andere Tipps

Um ein Verzeichnis rekursiv herunterladen, die index.html * Dateien und Downloads ohne den Hostnamen, übergeordnete Verzeichnis und die gesamte Verzeichnisstruktur verwirft:

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

Für alle anderen, dass ähnliche Fragen. Wget folgt robots.txt, die Sie die Website greifen könnten nicht zulassen. Keine Sorge, Sie können es deaktivieren:

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

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

Sie sollten den -m (Spiegel) Flag verwenden, so dass die Pflege braucht, um nicht verwirrt mit Zeitstempel und auf unbestimmte Zeit Rekursion.

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

Wenn Sie die Punkte hinzufügen, die von anderen in diesem Thread erwähnt, es sei:

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

Hier ist der komplette wget-Befehl, der für mich gearbeitet Dateien von einem Server des Verzeichnis zum Download (ohne Berücksichtigung 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/

Wenn --no-parent nicht helfen, können Sie --include Option verwenden.

Verzeichnis-Struktur:

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

Und Sie wollen downloads/good herunterladen, aber nicht downloads/bad Verzeichnis:

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

funktioniert für mich.

Vielleicht haben Sie eine .wgetrc die mit ihm stört?

Um ein Verzeichnis rekursiv mit Benutzername und Passwort zu holen, verwenden Sie den folgenden Befehl ein:

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

Alles, was Sie brauchen, ist zwei Flaggen, ist "-r" für Rekursion und "--no-parent" (oder -np), um in der '.' und ".." nicht zu gehen. Wie folgt aus:

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

Das ist es. Es wird heruntergeladen in den folgenden lokalen Baum: ./example.com/configs/.vim. Allerdings, wenn Sie nicht über die ersten beiden Verzeichnisse wollen, dann verwenden Sie die zusätzliche Flag --cut-dirs=2 wie in früheren Antworten vorgeschlagen:

wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/

Und es wird Ihren Dateibaum nur in ./.vim/ herunterladen

In der Tat habe ich die erste Zeile aus dieser Antwort gerade aus dem wget Handbuch , sie haben ein sehr sauberes Beispiel gegen Ende des Abschnitts 4.3.

Es soll möglich sein, es einfach zu tun, indem ein -r Hinzufügen

wget -r http://stackoverflow.com/

Wget 1.18 kann besser funktionieren, zum Beispiel, wurde ich von einer Version 1.12 Bug gebissen wurde, wo ...

wget --recursive (...)

... nur abruft index.html statt alle Dateien.

Behelfslösung war einige 301 Umleitungen zu bemerken und den neuen Standort versuchen -. Die neue URL gegeben, wget hat alle Dateien im Verzeichnis

Diese Version herunterlädt rekursiv und erstellt keine übergeordnete Verzeichnisse.

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"
}

Verbrauch:

  1. In den ~/.bashrc oder in Terminal einfügen
  2. wgetod "http://example.com/x/"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top