Misschien is je X-server gecrasht. Of je werkt aan een shellscript. Of je bent SSHed in een headless server. Om de een of andere reden, als je een bestand moet ophalen en een webbrowser geen optie is, wil je misschien wget bekijken. Als je de Linux-shell veel hebt gebruikt en met scripts of pakketinstallateurs hebt gewerkt, is de kans groot dat je wget in actie hebt gezien. Op het eenvoudigste niveau doet het precies wat de naam aangeeft en krijgt het een bestand van internet (of FTP). Daaronder zit echter een slimme functionaliteit.

De basis

Zoals hierboven vermeld, wordt wget het meest gebruikt om snel een bestand ergens op internet te pakken.

 wget http://mydomain.com/file.zip 

Die gewoon het bestand zou pakken en opslaan in de huidige map.

Als u wilt opslaan naar een andere bestandsnaam of een andere locatie, gebruikt u de vlag -O.

 # Herinner dat het een hoofdletter "O" is, geen nul of kleine "o" wget http://download.maketecheasier.com/Firefox_shortcut_keys.pdf -O Documents / ffkeys.pdf 

Mogelijk downloadt u meerdere bestanden, in welk geval u mogelijk een locatie voor alle downloads wilt opgeven. Gebruik gewoon de vlag -P (of -directory-prefix = LOCATION ) om aan te geven waar ze naartoe gaan.

Zoals je kunt zien, dat is veel output. Laten we de -q optie proberen om het op te schonen, waardoor het geschikter is voor scripts.

 wget -q http://mydomain.com/file.zip 

Op dezelfde manier kunt u de optie -nv gebruiken voor slechts een kleine uitvoer, maar niet zoveel als de standaardwaarde.

Luxueuze spullen

Wat als uw download is mislukt en u wilt doorgaan? Wat als het bestand al bestaat en u het niet wilt overschrijven? Er zijn opties om deze aan te pakken, evenals verschillende andere situaties.

Als u een afgebroken download wilt hervatten, gebruikt u de vlag -c (of -doorgaan )

Als je ervoor wilt zorgen dat je commando (of script) geen bestaande bestanden overschrijft, gebruik dan de -nc optie (voor no-clobber)

Er zijn tijden dat u er niet zeker van kunt zijn of bestandsnamen aan beide kanten hoofdlettergevoelig zijn, maar de vlag -ignore-case zal dat probleem tenietdoen .

Gebruik de optie -limit-rate = RATE om de downloadsnelheid te beperken, zoals hieronder wordt getoond.

 wget --limit-rate = 20000 http://ftp.us.debian.org/debian-cd/5.0.7/amd64/iso-cd/debian-507-amd64-netinst.iso 

FTP-opties

Zoals eerder opgemerkt, ondersteunt wget FTP ook. Als u zojuist een FTP-site opgeeft, zoals

 wget ftp://ftp.us.debian.org/debian-cd/5.0.7/amd64/iso-cd/debian-507-amd64-netinst.iso 

wget gaat ervan uit dat je een anonieme login wilt. Als dat niet het geval is, kunt u handmatig zaken als gebruikersnaam en wachtwoord opgeven met de volgende vlaggen:

  • -ftp-user = USER Specificeert de gebruikersnaam voor inloggen
  • -ftp-wachtwoord = PASS Specificeert wachtwoord
  • -no-passive-ftp Schakelt de passieve overdrachtsmodus uit.

Evenals enkele anderen voor gevallen van geavanceerd gebruik.

Time-outs, retry's en mislukte downloads

Ten slotte wordt wget geleverd met verschillende opties met betrekking tot problemen met de serververbinding en time-outs. Natuurlijk kunnen niet alle fouten worden afgehandeld, maar de volgende vlaggen zijn allemaal bedoeld om serverproblemen op te lossen:

  • -tries = NUMBER Geef het aantal keren op dat het opnieuw proberen te downloaden
  • -retry-connrefused Probeer opnieuw te downloaden, zelfs als de verbinding wordt geweigerd door de server.
  • -doorgaan Hiermee wordt een onvolledige download hervat, gebruikt als -c hierboven
  • -timeout = SECONDEN Algemene instelling - hoe lang te wachten voordat een time-out optreedt
  • -wait = SECONDS Hoe lang te wachten tussen succesvolle downloads (indien herhaald)

Conclusie

Voor zo'n eenvoudig, basis, ingebouwd hulpprogramma heeft wget een verrassend aantal te bieden. De volgende keer dat je merkt dat je een internetbewust shellscript schrijft, of dat je een ontbrekend stuurprogramma-bestand op je kapotte computer moet krijgen, moet je wget een kans geven. Als je interessante verhalen hebt over hoe wget je uit de problemen heeft gehaald, laat het ons dan weten in de comments hieronder.