Wget
wget is een Unix command line-routine om bestanden te downloaden over http of ftp. Erg handig in het automatiseren van processen, of het leegtrekken of migreren van een website. Het is het broertje van cURL.
Eén bestand downloaden via http
Gewoon
wget https://downloads.wordpress.org/plugin/akismet.3.1.3.zip
Naar een specifiek output-bestand
wget http://downloads.wordpress.org/plugin/w3-total-cache.zip -O ~/in3/w3-total-cache.zip
Wat niet werkt:
wget http://downloads.wordpress.org/plugin/w3-total-cache.zip ~/in3/w3-total-cache.zip # Laatste argument wordt genegeerd
wget http://downloads.wordpress.org/plugin/w3-total-cache.zip -O ~/in3 # Foutmelding: Laatste argument moet inclusief bestandsnaam zijn
Details:
- -o (zonder hoofdletter) heeft betrekking op het schrijven naar een logbestand
- -O (met hoofdletter) is blijkbaar een gebruikelijke schakelaar om de output te specificeren:
curl
gebruikt dezelfde schakelaar
Map met bestanden downloaden
Wil maar niet lukken. Het beste tot op heden bron:
wget --recursive --no-parent --reject "index.html" -e robots=off -nH -r http://media.example.com/mijn_map/
Hele site downloaden via http
wget -r -l 25 http://www.example.com
In dit geval recursief met een recursie-level van 25.
Hele site downloaden via ftp
Bv. (met een recursie-level van 25):
wget -r -l 25 ftp://username:password@ip.of.old.host
Escape codes
Door de onderdelen van het commando apart te benoemen en met ' te werken, kun je bv. uitroeptekens, spaties en apestaartjes escapen:
wget -q -T 60 --retry-connrefused -t 5 --waitretry=60 --user='ftp2.company.com|company2013' --password='!company2013' -N -P "data/parser/company/" "ftp://ftp2.company.com/Production/somedata.zip"
Spanning hosts
http://www.gnu.org/software/wget/manual/html_node/Spanning-Hosts.html
Script downloadsite.sh
#!/bin/sh ######################################### # Haal via wget (FTP) een site hierheen! ######################################### # # Inloggegevens bron-FTP-account # inlognaam="inlognaam" wachtwoord="wachtwoord" bron="ftp://example.com" # # Kopiëer alles naar een 'in'-map # doel="/home/account/in3" # # -r - Recursie # -c - Continue Handig als je verder wilt gaan met een eerdere download # -l - Level Level of recursie. Standaard is 5, en dat is te weinig! # cd $doel wget -r -c -l 25 --user=$inlognaam --password=$wachtwoord $bron
Voorbeeld: Mediawiki downloaden
De working directory is de doellocatie van de MediaWiki-installatie. Vandaaruit (bron):
wget http://releases.wikimedia.org/mediawiki/1.24/mediawiki-1.24.2.tar.gz
Error 420: Too Many Requests
Deze foutmelding geeft aan dat de server vindt dat je te veel vraagt. Oplossing: Commando herhaaldelijk geven, maar alleen nieuwe bestanden opslaan. Bv.:
wget -r -c http://www.example.com