Ninuzzo Programming Page / Home / Wget tutorial / Pagina 2
Fine Pagina
Software

pftp
php-msql-admin

Tpad
WikiLearn


Webmastering

Allineare un applet
Entities-list
Mappa dei 140 colori
Window creator


Linguaggi

C
C++
Kiss: my programming language!
PHP
Tcl/Tk
Teoria
XML


Utility

Calendario
Calcolatrice
Giochi
Info su questo server
Mirror di LDR
Motori di ricerca
Ninuzzo Link Collection


Linux - Unix

Apache Log Rotation
Apache+PHP+MySQL
Cache DNS con BIND
Demo grafici
Firewall
Htdig
info-tut
permessi
Samba
Shell
Slide del corso
Wget tutorial


Scienza

Matematica, Fisica


Newsletter: tips, links, novità del sito.
Archivio messaggi

Admin
Liberiamo l'hardware


Un primo sguardo a wget


wget è una potente utility di Linux in modo testo per scaricarsi interi siti HTTP o FTP per visione offline o per farne il mirror. Questi appunti introducono all'uso di wget tramite degli esempi di scaricamenti di siti. Per saperne di più basta digitare da una consolle Linux:

$ info wget

un breve riassunto delle opzioni si ottiene con

$ wget -h

Supponete di volervi scaricare tutto l'FTP mini-HOWTO per visione offline. L'URL è:

http://www.linuxdoc.org/HOWTO/mini/FTP.html
Dateci un'occhiata.

Se fate

$ wget http://www.linuxdoc.org/HOWTO/mini/FTP.html

scaricate solo la prima pagina FTP.html nella directory corrente, mentre il comando:

$ wget http://www.linuxdoc.org/HOWTO/mini/

scaricherebbe solo il file index.html

Per scaricare tutti i file collegati occorre inserire, prima o dopo l'URL, l'opzione -r che sta per "recurse". Quindi:

$ wget http://www.linuxdoc.org/HOWTO/mini/FTP.html -r

oppure

$ wget -r http://www.linuxdoc.org/HOWTO/mini/FTP.html

Per ogni file scaricato, wget scrive su stderr (standard error), quindi per default sul video, le seguenti informazioni:


--10:36:37--  http://www.linuxdoc.org:80/HOWTO/mini/FTP.html
           => `www.linuxdoc.org/HOWTO/mini/FTP.html'
Connecting to www.linuxdoc.org:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 2,533 [text/html]

    0K -> ..                                                     [100%] 
Questo significa che alle ore 10:36:37, wget ha fatto la richiesta all'host HTTP www.linuxdoc.org (sulla porta HTTP di default, la numero 80) richiedendo il file /HOWTO/mini/FTP.html. La richiesta è andata a buon fine (200 OK). Questo file è stato salvato in locale con lo stesso nome (FTP.html) nel direttorio (creato apposta da wget) www.linuxdoc.org/HOWTO/mini/ a partire dalla directory corrente. La lunghezza del file è di 2,533 bytes e il suo mime type è text/html. wget stampa un puntino (.) per ogni kbyte scaricato e indica pure la percentuale del file scaricato e poi anche la velocità media di scaricamento.

Entrando in www.linuxdoc.org/HOWTO/mini trovate tutti i file dell'howto scaricati (ll sta per ls -l nella mia versione di Linux; con linux peanut basta digitare l; il comando alias comunque vi dice tutti gli alias definiti e vi permette di ridefinirli o definirne di nuovi):

$ ll
total 52k
-rw-r--r--   1 root     root         1.8k Feb 15 22:37 FTP-1.html
-rw-r--r--   1 root     root         2.0k Feb 15 22:37 FTP-2.html
-rw-r--r--   1 root     root          10k Feb 15 22:37 FTP-3.html
-rw-r--r--   1 root     root         4.5k Feb 15 22:37 FTP-4.html
-rw-r--r--   1 root     root         2.8k Feb 15 22:37 FTP-5.html
-rw-r--r--   1 root     root         3.1k Feb 15 22:37 FTP-6.html
-rw-r--r--   1 root     root         2.5k Feb 15 22:37 FTP.html
-rw-r--r--   1 root     root          317 Feb 15 22:36 next.gif
-rw-r--r--   1 root     root          317 Feb 15 22:36 prev.gif
-rw-r--r--   1 root     root          316 Feb 15 22:36 toc.gif

Con l'opzione -b si attiva wget in background. Ecco lo stesso scaricamento di prima, fatto in background:

$ wget -rb http://www.linuxdoc.org/HOWTO/mini/FTP.html
Continuing in background.
Output will be written to `wget-log'.

Per vedere il log basta fare

$ less wget-log

Intando avete la stessa consolle libera per fare altre cose.

Nota: se desiderate un nome diverso per il file di log, specificatelo con l'opzione -o (alias --output-file). Es.

$ wget -rb http://www.linuxdoc.org/HOWTO/mini/FTP.html -o ftp_howto.log

L'opzione -o può essere specificata anche senza l'opzione -b. In questo caso il log invece di andare a video verrà scritto sul file specificato (ma dovrete attendere che wget finisca prima di avere la shell libera, a meno che non lo stoppate con CTRL-Z e poi riprendete in background con bg; è più semplice comunque usare l'opzione -b). Notiamo infine che se il file specificato con -o esiste già, esso viene sovrascritto (sempre ovviamente che l'utente che lancia wget abbia permesso di scrivere il file).


Le opzioni sono tante


date un'occhiata a questo comando, se non lo conoscevate:

$ man 1 nohup

nohup permette di avviare un altro programma, in modo che non sia interrompibile (il segnale di hungup mandato al processo figlio generato da nohup viene ignorato). Questo vi consente non solo di avere la consolle libera, ma anche di far continuare il lavoro di scaricamento di wget anche dopo che vi siete loggati fuori! La sintassi è semplice:

nohup COMMAND [ARG]...

Esempio:

$ nohup wget -rb http://www.linuxdoc.org/HOWTO/mini/FTP.html

L'output che wget dirige a stdin viene salvato sul file nohup.out (se il file esiste già il nuovo output viene appeso al contenuto esistente) e come prima viene creato wget-log. In questo caso nohup.out contiene semplicemente il messaggio con cui wget indica che lo scaricamento prosegue in background:

nohup.out


Continuing in background.
Output will be written to `wget-log'.

Quindi potete scaricarvi un grosso sito, mentre non ci siete e non occorre nemmeno essere loggati o lasciare il telnet aperto (se intendete fare lo scaricamento su un sistema remoto), grazie a nohup. Ovviamente nohup può essere usato con qualsiasi altro comando, non solo con wget.

Un'altra opzione di wget, -S vi fornisce nel log molte altre informazioni in più sui file che andate scaricando. Ecco un esempio:

$ wget localhost/prova
--21:31:51--  http://localhost:80/prova
           => `prova'
Connecting to localhost:80... connected!
HTTP request sent, awaiting response... 302 Found
Location: http://localhost/prova/ [following]
--21:31:51--  http://localhost:80/prova/
           => `index.html'
Connecting to localhost:80... connected!
HTTP request sent, awaiting response... 200 Ok
Length: 83 [text/html]

    0K ->                                                        [100%]

21:31:51 (81.05 KB/s) - `index.html' saved [83/83]


$ wget -S localhost/prova
--21:32:28--  http://localhost:80/prova
           => `prova'
Connecting to localhost:80... connected!
HTTP request sent, awaiting response... 302 Found
2 Content-Type: text/html
3 Accept: */*
4 Host: localhost
5 User-Agent: Wget/1.5.3
6 Content-Length: 0
7 Server: Xitami
8 Location: http://localhost/prova/
9
Location: http://localhost/prova/ [following]
--21:32:29--  http://localhost:80/prova/
           => `index.html.1'
Connecting to localhost:80... connected!
HTTP request sent, awaiting response... 200 Ok
2 Server: Xitami
3 Content-Type: text/html
4 Content-Length: 83
5 Last-Modified: Thu, 17 Aug 2000 21:06:36 GMT
6

    0K ->                                                        [100%]

21:32:29 (81.05 KB/s) - `index.html.1' saved [83/83]
Le informazioni in più ottenute con -S includono la data di ultima modifica del file che si sta scaricando e il nome del server (che è Xitami sul mio vecchio portatile :). In sintesi -S (o --server-response) fa stampare nei log anche gli header mandati dai server HTTP e le risposte inviate dai server FTP.

Ok, supponiamo di voler fare lo stesso download, ma non volere che wget ricrei in locale la stessa struttura delle directory che c'è a partire dalla document root del server: in pratica tutti i file di prima devono essere messi in una sola directory, che si chiama FTP_mini_HOWTO, invece di essere messi in www.linuxdoc.org/HOWTO/mini. Il comandi che bisogna dare sono:

$ mkdir FTP_mini_HOWTO
$ cd FTP_mini_HOWTO
$ wget -nd -r http://www.linuxdoc.org/HOWTO/mini/FTP.html

-nd sta per "no directory" ed ha effetto quando si scarica ricorsivamente. Tutti i file vengono salvati nella directory corrente, e non viene ricreata la stessa struttura delle directory del server. Se vengono scaricati file con lo stesso nome in directory differenti, wget rinomina i file aggiungendo l'estensione .n, quindi non perderete nessun file causa sovrascrittura.

Inoltre esiste l'opzione -P, oppure --directory-prefix=PREFIX che specifica di salvare la struttura del sito all'interno di PREFIX. Quindi i comandi precedenti possono essere abbreviati in uno solo:

$ wget -r -nd -P FTP_mini_HOWTO http://www.linuxdoc.org/HOWTO/mini/FTP.html

in quanto se la directory FTP_mini_HOWTO non esiste, essa viene creata da wget, in questo caso a partire dalla directory corrente. Se volete sia creata invece nella vostra home, l'opzione diventa -P ~/FTP_mini_HOWTO Naturalmente il default valore di default dell'opzione -P è `.' (la directory corrente).

Inoltre potete specificare più URL sulla riga di comando di wget, insieme ad opzioni che si applicano a tutti gli URL iniziali. Infatti la sintassi generica di wget è:

wget [OPTION]... [URL]...

e quindi ad es.

wget [OPTION] URL1 URL2

equivale a

wget [OPTION] URL1 wget [OPTION] URL2

<< Indice Problemi con i link >>

Inizio Pagina
Copyleft 2001 Antonio Bonifati. Tutto il materiale è distribuito con licenza GNU GPL.