GNU Wget

Utilità non interattiva di download

Aggiornato per Wget 1.8.1, Dicembre 2001

daHrvoje Niksic e dagli sviluppatori


Autore: Hrvoje Niksic ed altri Data: 14/09/2002
Revisione: 1.0 Progetto Italiano Documentazione OS/2 ed eCS
Oggetto: Manuale di GNU Wget Traduttore: Mentore Siesto


Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.

È garantito il permesso a copiare, distribuire e/o modificare questo documento sotto i termini della GNU Free Documentation License, Versione 1.1 o ogni altra versione superiore pubblicata dalla Free Software Foundation; le sezioni non variabili sono "GNU General Public License" e "GNU Free Documentation License", senza testi di copertina. Una copia della licenza è contenuta in questo documento, intitolata "GNU Free Documentation License".

Indice

  1. Introduzione
  2. Invocazione
    1. Formato URL
    2. Sintassi delle opzioni
    3. Opzioni base di avvio
    4. File di ingresso e di log
    5. Opzioni di download
    6. Opzioni per le directory
    7. Opzioni HTTP
    8. Opzioni FTP
    9. Opzioni per il download ricorsivo
    10. Opzioni di accettazione/reiezione ricorsiva
  3. Recupero ricorsivo
  4. Seguire collegamenti
    1. Scorrere host
    2. Tipi di file
    3. Limiti di directory
    4. Collegamenti relativi
    5. Collegamenti FTP
  5. Time-Stamping
    1. Uso del timestamping
    2. Timestamping HTTP
    3. Timestamping FTP
  6. File di avvio
    1. Posizione di Wgetrc
    2. Sintassi di Wgetrc
    3. Comandi di Wgetrc
    4. File di esempio
  7. Esempi
    1. Uso semplice
    2. Uso avanzato
    3. Uso specializzato
  8. Varie
    1. Proxy
    2. Distribuzione
    3. Mailing List
    4. Riportare bug
    5. Portabilità
    6. Segnali
  9. Appendici
    1. Robot
    2. Considerazioni di sicurezza
    3. Contributi
  10. Copying
    1. GNU General Public License
    2. Preamble
    3. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    4. How to Apply These Terms to Your New Programs
    5. GNU Free Documentation License
    6. ADDENDUM: How to use this License for your documents
  11. Indice analitico

1.Introduzione

GNU Wget è un'utilità gratuita per lo scaricamento non-interattivo di file dal Web. Wget supporta i protocolli HTTP, HTTPS, ed FTP, così come il recupero attraverso proxy HTTP.

Questo capitolo è una introduzione alle funzioni di Wget.

2.Invocazione

Per default, Wget è molto semplice da invocare. La sintassi base è

wget [opzione]... [URL]...

Wget scaricherà tutti gli URL specificati nella linea di comando. URL è uno Uniform Resource Locator, come definito sotto.

Si potrebbe comunque voler cambiare alcuni dei parametri predefiniti di Wget. Lo si può fare in due modi: permanentemente, aggiungendo il comando appropriato al file `.wgetrc' (sezione File di avvio), oppure specificandolo sulla linea di comando.

Formato URL

URL è l'acronimo del termine Uniform Resource Locator. Un URL è una stringa che rappresenta una risorsa disponibile in Internet. Wget riconosce la sintassi degli URL definita nel RFC1738. Questa è la forma più usata (le parentesi quadre denotano parti opzionali):

http://host[:port]/directory/file
ftp://host[:port]/directory/file

È possibile codificare nome utente e password in un URL:

ftp://user:password@host/path
http://user:password@host/path

user o password o entrambi possono essere evitati. Se si evita di specificare il nome utente HTTP, o la password, non verrà spedita alcuna autenticazione. Evitando di specificare il nome utente in FTP, verrà usato il termine `anonymous'. Evitando di specificare la password in FTP, verrà fornito l'indirizzo di email come password predefinita. (1)

È possibile codificare caratteri non sicuri in un URL, come `%xy', dove xy è il codice esadecimale del valore ASCII del carattere. Alcuni caratteri non sicuri sono `%' (scritto come `%25'), `:' (scritto `%3A'), e `@' (scritto come `%40'). Si faccia riferimento al RFC1738 per una lista completa di questi caratteri.

Wget supporta inoltre la funzione type per URL FTP. Per default, i documenti FTP sono recuperati in modo binario (tipo `i'), ossia vengono scaricati senza modifiche. Un altro modo utile è il modo `a' (ASCII), che converte i delimitatori di linea tra i diversi sistemi operativi, e pertanto è utile per i file di testo. Ecco un esempio:

ftp://host/directory/file;type=a

Due varianti di specifiche di URL sono supportate, per motivi storici (o isterici?) e per il loro ampio uso.

Sintassi FTP (supportata da NcFTP):

host:/dir/file

Sintassi HTTP (introdotta con Netscape):

host[:port]/dir/file

Queste due forme alternative sono deprecate, e potrebbero non essere più supportate in futuro.

Se non si capisce la differenza tra queste notazioni, o non si sa quale usare, è sufficiente usare il formato ordinario usato con il browser preferito, come Lynx o Netscape.

Sintassi delle opzioni

Wget usa GNU getopts per elaborare i suoi argomenti, per cui ogni opzione ha una forma breve e una lunga. Le forme lunghe sono più semplici da ricordare, ma sono lunghe a scriversi. È possibile mescolare liberamente stili diversi per le opzioni, o specificare le opzioni dopo gli argomenti della linea di comando. Così, è possibile scrivere

wget -r --tries=10 http://fly.srk.fer.hr/ -o log

Lo spazio tra un'opzione che accetta un argomento e l'argomento stesso può essere omesso. Invece di `-o log' si può scrivere `-olog'.

Si possono attaccare tra loro opzioni che non richiedono argomenti, come:

wget -drc URL

Questa forma equivale a:

wget -d -r -c URL

Dato che le opzioni possono essere specificate dopo gli argomenti, si può terminarle con `--'. Per cui, la frase seguente cercherà di scaricare l'URL `-x', riportando i fallimenti in `log':

wget -o log -- -x

Le opzioni che accettano liste separate da virgole rispettano la convenzione secondo cui specificare una lista vuota ne cancella i valori. Questo può essere utile per ripulire le impostazioni di `.wgetrc'. Per esempio, se nel file `.wgetrc' exclude_directories è impostato a `/cgi-bin', il seguente esempio lo cancellerà e quindi lo imposterà a `/~nobody' e `/~somebody'. è anche possibile cancellare l'elenco in `.wgetrc' (consultare Sintassi di Wgetrc).

wget -X " -X /~nobody,/~somebody

Opzioni base di avvio

`-V'
`--version'
Stampa la versione di Wget.
`-h'
`--help'
Stampa un messaggio contenente le opzioni di Wget dalla linea di comando.
`-b'
`--background'
Va in secondo piano immediatamente dopo l'avvio. Se non viene specificato un file di uscita tramite l'opzione `-o', l'output viene rediretto a `wget-log'.
`-e command'
`--execute command'
Esegue il comando command come se esso fosse parte di `.wgetrc' (consultare File di avvio). Un comando così invocato verrà eseguito dopo i comandi inseriti in `.wgetrc', ottenendo così la precedenza su essi.

File di ingresso e di log

`-o logfile'
`--output-file=logfile'
Salva tutti i messaggi in logfile. Normalmente i messaggi sono riportati direttamente allo standard error (la finestra VIO, o a schermo intero nel caso di eCS - OS/2).
`-a logfile'
`--append-output=logfile'
Aggiunge l'uscita al file logfile. è identico all'opzione `-o', salvo per il fatto che essa aggiunge i messaggi al file logfile invece che sovrascrivere i vecchi messaggi. Se il file logfile non esiste, verrà creato un nuovo file.
`-d'
`--debug'
Abilita la stampa di debug, ossia l'emissione di varie informazioni importanti per gli sviluppatori di Wget se questo non funziona correttamente. L'amministratore di sistema potrebbe aver scelto di compilare Wget senza supporto al debug, nel qual caso `-d' non funzionerà (quest'operazione spetta all'esecutore del porting nel caso di eCS - OS/2).
Si noti che compilare Wget con supporto al debug è sempre un'operazione sicura -- Wget così compilato non emetterà messaggi di debug a meno che non lo si richieda con l'opzione `-d'. Si consulti la sezione Riportare bug, su come spedire bug report.
`-q'
`--quiet'
Disattiva ogni emissione di messaggi da parte di Wget.
`-v'
`--verbose'
Attiva l'uscita estesa, con tutti i dati disponibili. L'opzione predefinita è "verbose".
`-nv'
`--non-verbose'
Uscita non verbosa -- disattiva l'emissione di messaggi lunga, senza però eliminare ogni messaggio (si usi `-q' per questo scopo), ossia i messaggi d'errore e le informazioni basilari vengono comunque stampati.
`-i file'
`--input-file=file'
Legge URL dal file file; in questo caso non servono URL specificati nella linea di comando. Se ci sono URL nella linea di comando e in un file di ingresso, gli URL della linea di comando verranno recuperati per primi. Il file file non dev'essere necessariamente un documento HTML, è sufficiente che gli URL siano specificati in sequenza. Comunque, specificando l'opzione `--force-html', il documento verrà trattato come di tipo `html'. In questo caso si potrebbero avere problemi con i collegamenti relativi, che possono essere risolti aggiungendo <base href="url"> ai documenti oppure specificando `--base=url' nella linea di comando.
`-F'
`--force-html'
Quando l'ingresso è letto da un file, ne forza il trattamento come un file HTML. Questo rende possibile recuperare collegamenti relativi da file HTML preesistenti sul disco locale, aggiungendo <base href="url"> al file HTML, o usando l'opzione `--base'.
`-B URL'
`--base=URL'
Usata in congiunzione con `-F', fa precedere da URL i collegamenti relativi nel file specificato da `-i'.

Opzioni di download

`--bind-address=ADDRESS'
Nel realizzare connessioni client TCP/IP, effettua un bind() all'indirizzo ADDRESS sulla macchina locale. ADDRESS può essere specificato come nome di host o come indirizzo IP. Quest'opzione può essere utile se la macchina è legata a IP multipli.
`-t number'
`--tries=number'
Imposta il numero di tentativi a number. Specificare 0 oppure `inf' per tentativi infiniti.
`-O file'
`--output-document=file'
I documenti non verranno scritti nei file appropriati, ma verranno concatenati insieme e scritti nel file file. Se file esiste, verrà riscritto. Se il file file è `-', i documenti verranno scritti sullo standard output. Includere quest'opzione imposta a 1 il numero di prove.
`-nc'
`--no-clobber'
Se un gile viene scaricato più di una volta nella stessa directory, il comportamento di Wget dipende da alcune opzioni, tra cui `-nc'. In alcuni casi, il file locale è "clobbered", oppure sovrascritto, in caso di scaricamenti ripetuti. In altri casi viene preservato.

Nell'eseguire Wget senza `-N', `-nc', o `-r', scaricare lo stesso file nella stessa directory porterà a preservare la copia originale del file e a chiamare la seconda copia con nome `file.1'. Se il file viene scaricato nuovamente, la terza copia verrà nominata `file.2', e così via.
Se si specifica `-nc', questo comportamento viene soppresso, e Wget si rifiuterà di scaricare nuove copie di `file'. Pertanto, "no-clobber" è un nome improprio per questo modo -- non viene prevenuto il "clobbering" (dato che i suffissi numerici già prevengono il clobbering), quanto piuttosto il salvataggio di versioni multiple.

Eseguendo Wget con l'opzione `-r', ma senza specificare le opzioni `-N' o `-nc', re-scaricare il file porterà semplicemente alla sovrascrittura della vecchia copia. Aggiungere `-nc' previene questo comportamento, causando il mantenimento della vecchia versione e ignorando ogni nuova copia sul server

Eseguendo Wget con l'opzione `-N', con o senza `-r', la decisione di scaricare o meno una nuova copia del file dipenderà dalle informazioni di tempo locali e remote del file (consultare Time-Stamping). `-nc' può non essere specificato nella stessa linea di `-N'.

Si noti che quando viene specificato `-nc', file con suffisso `.html' o (yuck) `.htm' verranno caricati dal disco locale ed elaborati come se fossero stati recuperati dal Web.

`-c'
`--continue'
Prosegue nello scaricamento di un file parzialmente scaricato. Questo è utile nel caso si voglia completare uno scaricamento iniziato con un'istanza precedente di Wget, o con un altro programma. Per esempio
wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
Se c'è un file chiamato `ls-lR.Z' nella directory corrente, Wget assumerà che si tratti della prima porzione del file remoto, e chiederà al server di continuare il recupero da una locazione pari alla lunghezza del file locale.

Si noti che non è necessario specificare quest'opzione se si vuole soltanto che la corrente istanza di Wget riprovi lo scaricamento di un file, in caso la connessione si perda. Questo è il comportamento predefinito. `-c' influenza solo la ripresa di scaricamenti iniziati prima di questa istanza di Wget, i cui file locali siano ancora presenti.

Senza `-c', l'esempio precedente scaricherebbe il file remoto come `ls-lR.Z.1', lasciando intatto il file `ls-lR.Z'.

A partire da Wget 1.7, usando `-c' su un file non vuoto, e se il server non supporta la continuazione dello scaricamento, Wget si rifiuterà di far partire il download da capo, cosa che rovinerebbe i contenuti preesistenti. Se si vuole scaricare il documento da capo, si rimuova il file.

Sempre a partire da Wget 1.7, se si usa `-c' su un file delle stesse dimensioni di quello sul server, Wget si rifiuterà di scaricare il file e stamperà un messaggio di spiegazioni. Lo stesso accadrà se il file sul server risulterà più piccolo di quello sul disco locale --- "continuare" lo scaricamento non ha più significato.

D'altro canto, usando `-c', qualsiasi file sul server di dimensioni maggiori di quello locale sarà considerato come download incompleto e solo un numero di byte pari a (lunghezza(remoto) - lunghezza(locale)) verrà scaricato, per essere appeso al file locale. Questo comportamento può essere ottimo in certi casi -- per esempio, si può usare `wget -c' per scaricare solo la nuova porzione di una collezione di dati o di un file di log.

Comunque, se il file è di dimensioni maggiori sul server perché è stato cambiato, e non semplicemente aggiornato, il risultato sarà un file danneggiato. Wget non può verificare che il file locale sia effettivamente un prefisso valido del file remoto. è necessaria molta cautela nell'uso di `-c' insieme a `-r', dato che ogni file sarà considerato candidato al grado di "download incompleto".

Un altro caso in cui si può ottenere un file danneggiato nel tentativo di usare `-c' si ha con un proxy HTTP imperfetto, che inserisce una stringa "trasferimento interrotto" nel file locale. Nel futuro potrebbe venire aggiunta un'opzione "rollback" per trattare simili casi.

Attenzione: l'opzione `-c' funziona solo con server FTP e HTTP che supportano l'intestazione Range.

`--progress=type'
Sceglie il tipo di indicatore di progresso che si desidera usare. Indicatori validi sono "dot" e "bar".
L'indicatore "dot" è usato per default. Esso traccia il recupero stampando punti sullo schermo, ognuno dei quali rappresenta un ammontare fissato di dati scaricati.

Usando questo indicatore, è possibile anche impostare lo stile specificando il tipo come `dot:stile'. Stili diversi assegnano significati diversi a ogni punto. Con lo stile default ogni punto rappresenta un kB, ci sono 10 punti in un cluster e 50 punti in una linea. Lo stile binary ha un orientamento più "computereccio": ogni punto segnala 8 kB, i cluster sono dati da 16 punti e vengono tracciati 48 punti per linea (linee di 348 kB). Lo stile mega è usato per scaricare grandi file: ogni punto rappresenta 64 kB, ci sono otto punti in un cluster, e 48 punti per linea (ogni linea contiene 3 MB).

Specificando `--progress=bar', Wget traccerà una gradevole barra ASCII (come la colonnina di un termometro) per indicare il recupero. Se l'uscita non è un terminale, quest'opzione verrà ignorata, e Wget userà l'indicatore a punti. Se si vuole forzare l'uso dell'indicatore a barra, si usi `--progress=bar:force'.

`-N'
`--timestamping'
Disattiva il time stamping. Si consulti Time-Stamping per dettagli.
`-S'
`--server-response'
Stampa le intestazioni spedite dai server HTTP e le risposte spedite dai server FTP.
`--spider'
Se invocato con quest'opzione, Wget si comporterà come uno spider, ossia non scaricherà le pagine, semplicemente controllerà la loro presenza. è possibile usarla per controllare i propri bookmark, per esempio con:
wget --spider --force-html -i bookmarks.html
Questa funzione richiede molto lavoro perché Wget si avvicini alle funzionalità dei veri spider web.
`-T seconds'
`--timeout=seconds'
Imposta il tempo limite a seconds secondi. Quando viene lanciata una lettura da rete, il descrittore del file viene sottoposto a un controllo di tempo, che lascerebbe in caso contrario una connessione in attesa (lettura ininterrotta). Il tempo predefinito è 900 secondi (15 minuti): impostare il tempo limite a 0 disattiverà ogni controllo.

Si consiglia di non ridurre il tempo limite predefinito con quest'opzione, a meno che non si sappia cosa si sta facendo.

`-w seconds'
`--wait=seconds'
Attende un numero di secondi specificato tra ogni recupero. L'uso di quest'opzione è raccomandato, dato che riduce il carico sul server rendendo meno frequenti le richieste.. Invece che in secondi, il tempo può essere specificato in minuti usando il suffisso m, in ore usando h o in giorni usando il suffisso d.

Specificare un valore alto per quest'opzione è utile se la rete o l'host di destinazione è "down", così che Wget può attendere abbastanza a lungo da aspettarsi ragionevolmente che l'errore sia corretto prima di riprovare.

`--waitretry=seconds'
Se non si desidera che Wget attenda tra ogni recupero, ma solo tra i tentativi successivi a download falliti, si può usare quest'opzione. Wget userà un linear backoff, attendendo 1 secondo dopo il primo fallimento, 2 secondi dopo il fallimento, .. , fino ad attendere seconds per ogni file. Pertanto, un valore 10 porterà Wget ad attendere fino a (1 + 2 + .. + 10) = 55 secondi per file.
Si noti che l'opzione è attiva per default nel file globale ".wgetrc" ("wgetrc" per OS/2 - eCS).
`--random-wait'
Alcuni siti web possono effettuare analisi dei log per identificare programmi di recupero come Wget, osservando somiglianze statistiche significative nei tempi tra una richiesta e l'altra. Quest'opzione causa una variazione del tempo tra una richiesta e la successiva tra 0 e 2 * wait secondi, dove wait è stato specificato usando le opzioni `-w' o `--wait', in modo da camuffare la presenza di Wget.

Un articolo recente di una pubblicazione dedicata allo sviluppo su una popolare piattaforma consumer ha fornito il codice per effettuare quest'analisi al volo. Il suo autore suggeriva il bloccaggio al livello di indirizzo classe C per assicurare che i programmi di recupero automatico venissero bloccati, nonostante il cambiamento degli indirizzi forniti dal DHCP.

L'opzione `--random-wait' è stata ispirata da questa raccomandazione a bloccare l'accesso a un file a molti utenti, a causa delle azioni di uno solo.

`-Y on/off'
`--proxy=on/off'
Attiva o disattiva il supporto proxy. Il proxy è attivo per default, se la variabile d'ambiente appropriata è definita.
`-Q quota'
`--quota=quota'
Specifica la quota (quantità) di download per i recuperi automatici. Il valore può essere specificato in byte (default), kB (con suffisso `k') o MB (con suffisso `m').

Si noti che la quota non influenza il download di un singolo file. Pertanto, specificando `wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz', il file `ls-lR.gz' verrà comunque scaricato. Lo stesso avviene se vengono specificati molti URL sulla linea di comando. Comuque, la quota è rispettata nel recupero ricorsivo, o da un file di ingresso. Così è possibile scrivere `wget -Q2m -i sites' in sicurezza: il download verrà terminato quando la quota sarà stata superata. Impostare la quota a 0 oppure a `inf' cancella il limite.

Opzioni per le directory

`-nd'
`--no-directories'
Non crea una gerarchia di directory in recuperi ricorsivi. Con quest'opzione attivata, tutti i file verranno salvati nella directory corrente, senza clobbering (se un nome appare più volte, i nomi di file avranno estensioni con aggiunto `.n').
`-x'
`--force-directories'
È l'opposto di `-nd': crea una gerarchia di directory, anche se questa non dovrebbe essere creata. Per esempio, `wget -x http://fly.srk.fer.hr/robots.txt' salverà il file scaricato in `fly.srk.fer.hr/robots.txt'.
`-nH'
`--no-host-directories'
Disabilita la generazione di directory prefissate dallo host. Per default, invocando Wget con `-r http://fly.srk.fer.hr/', verrà creata una struttura di directory che comincia per `fly.srk.fer.hr/'. Questa opzione disabilita tale comportamento.
`--cut-dirs=number'
Ignora un numero pari a number di componenti di directory. Questo è utile per avere un controllo fine sulle directory dove verebbe salvato un download ricorsivo.

Si prenda ad esempio la directory a `ftp://ftp.xemacs.org/pub/xemacs/'. Se la si recupera con `-r', essa verrà salvata localmente sotto `ftp.xemacs.org/pub/xemacs/'. Mentre l'opzione `-nH' può rimuovere la parte `ftp.xemacs.org/', rimarrà ancora la componente `pub/xemacs'. Tramite `--cut-dirs', Wget non "vedrà" number componenti delle directory remote. Ecco svariati esempi di come funziona number.

Senza opzioni:    -> ftp.xemacs.org/pub/xemacs/
-nH               -> pub/xemacs/
-nH --cut-dirs=1  -> xemacs/
-nH --cut-dirs=2  -> .

--cut-dirs=1      -> ftp.xemacs.org/xemacs/
...
Se si vuole eliminare la struttura di directory, questa opzione è simile a una combinazione di `-nd' e `-P'. Comunque, a differenza di `-nd', `--cut-dirs' non si perde con le sottodirectory: per esempio, con `-nH --cut-dirs=1', una sottodirectory `beta/' verrà posta sotto `xemacs/beta', come ci si aspetterebbe.
`-P prefix'
`--directory-prefix=prefix'
Imposta il prefisso delle directory a prefix. Il prefisso di directory è la directory dove verranno salvati tutti i file e le sub-directory, per esempio alla fine dell'albero di recuperi. Il valore di default è `.', la directory corrente.

Opzioni HTTP

`-e'
`--html-extension'
Se viene scaricato un file di tipo `text/html' e la URL non termina con l'espressione regolare `\.[Hh][Tt][Mm][Ll]?', questa opzione porterà ad appendere il suffisso `.html' al nome del file locale. Questo è utile, per esempio, durante il mirroring di un sito remoto che usa pagine `.asp', ma si vuole che le pagine in locale siano visibili dal proprio server Apache. Un altro uso valido si ha nello scaricare il prodotto di CGI. Una URL come `http://site.com/article.cgi?25' verrà salvata con nome `article.cgi?25.html'.

Si noti che i nomi di file così cambiati verranno scaricati ogni volta che si riesegue il mirroring di un sito, dato che Wget non sa se il file locale `X.html' corrisponda o meno all'URL remoto `X' (non sa ancora che l'URL produce un'uscita di tipo `text/html'). Per prevenire questo ri-scaricamento, è necessario usare `-k' e `-K' così che la versione originale del file verrà salvata come `X.orig' (si consulti la sezione Opzioni per il download ricorsivo).

`--http-user=user'
`--http-passwd=password'
Specifica il nome di utente (user) e la password (password) per un server HTTP. In accordo al tipo di sfida, Wget li codificherà tramite lo schema di autenticazione basic (insicuro) o digest.

Un'altra via per specificare nome utente e password è nell'URL stesso (si consulti Formato URL). Per informazioni aggiuntive sulla sicurezza con Wget, consultare Considerazioni di sicurezza.

`-C on/off'
`--cache=on/off'
Se settato a "off", disabilita la cache del server. In questo caso, Wget manderà al server remoto una direttiva appropriata (`Pragma:no-cache') per acquisire il file dal servizio remoto piuttosto che ritornare la versione in cache. Questo è utile sopratutto per recuperare e cancellare documenti vecchi su server proxy.
La cache è permessa per default.
`--cookies=on/off'
Se messo a "off", disabilita l'uso dei cookie. I cookie sono un meccanismo per mantenere lo stato da parte del server. Il server manda un cookie al client tramite l'intestazione Set-Cookie, e il client risponde con lo stesso cookie in presenza di richieste successive. Dato che i cookie permettono agli amministratori dei server di tracciare i visitatori e i siti possono scambiarsi queste informazioni, alcune persone li considerano una violazione della privacy. Il comportamento predefinito è di usare i cookie: comunque, il loro immagazzinamento è per default disattivato.
`--load-cookies file'
Carica cookie dal file file prima del primo recupero HTTP. file è un file di testo nel formato usato dal file `cookies.txt' di Netscape.

Quest'opzione viene tipicamente usata nel mirroring di siti che richiedono che si sia collegati con essi, per accedere ad alcuni dei loro contenuti. Il processo di login tipicamente richiede che il server mandi un cookie HTTP all'atto della ricezione, e verifichi le credenziali dell'utente. Il cookie viene dunque rispedito dal browser nell'accedere a quella parte del sito, e questo prova l'identità dell'utente.

Il mirroring di un sito simile richiede che Wget mandi gli stessi cookie mandati dal browser nel comunicare con il sito. Questo si può ottenere tramite `--load-cookies': basta puntare Wget alla posizione del file `cookies.txt', e Wget manderà gli stessi cookie che il browser manderebbe nella stessa situazione. Browser differenti mantengono i file dei cookie in locazioni differenti:

Netscape 4.x.
I cookie sono in `~/.netscape/cookies.txt'.
Mozilla e Netscape 6.x.
Il file dei cookie di Mozilla è chiamato anch'esso `cookies.txt', e localizzato da qualche parte sotto `~/.mozilla', nella directory del profilo utente.. Il percorso completo solitamente termina con qualcosa come `~/.mozilla/default/some-weird-string/cookies.txt'.
Nota del traduttore: sotto OS/2 - eCS, i separatori delle directory sono i soliti "\", e la tilde "~" non c'è: ci si rechi nella directory radice di Mozilla.
Internet Explorer.
Si può produrre un file di cookie utilizzabile da Wget tramite il menu File, Importa ed Esporta, Esporta Cookie. La procedura è stata testata con Internet Explorer 5, non si garantisce il funzionamento con altre versioni.
Altri browsers.
Nell'uso di un browser diverso da quelli elencati, `--load-cookies' funzionerà solo se si può localizzare o produrre un file di cookie nel formato di Netscape.
Se non è possibile usare `--load-cookies', può esserci ancora un'alternativa. Se il browser usato supporta un "cookie manager", lo si può usare per vedere i cookie usati nell'acccedere al sito in fase di mirroring. Si scriva il nome e il valore del cookie, e si istruisca Wget a mandarli oltrepassando il supporto "ufficiale":
wget --cookies=off --header "Cookie: name=value"
`--save-cookies file'
Salva cookie dal file file alla fine della sessione. I cookie il cui tempo di vita non è specificato, o che sono già annullati (espirati), non verranno salvati.
`--ignore-length'
Sfortunatamente, alcuni server HTTP (per essere precisi programmi CGI) mandano intestazioni Content-Length fasulle, che portano Wget a pensare che il documento non sia stato completamente scaricato. Si può ipotizzare questo comportamento se Wget riprova continuamente a scaricare lo stesso documento, lamentandosi che la connessione (normale in altri casi) si è chiusa sempre sullo stesso byte.

Tramite quest'opzione, Wget ignorerà l'intestazione Content-Length, come se mai fosse esistita.

`--header=additional-header'
Definisce un'intestazione additional-header aggiuntiva da passare ai server HTTP. Le intestazioni contengono un carattere `:' preceduto da uno o più caratteri non vuoti, e non possono contenere caratteri di nuova linea.

Si possono definire più intestazioni addizionali specificando `--header' più volte.

wget --header='Accept-Charset: iso-8859-2' \
     --header='Accept-Language: hr'        \
       http://fly.srk.fer.hr/
Specificare una stringa vuota come intestazione cancellerà tutte le intestazioni aggiuntive precedentemente definite.
`--proxy-user=user'
`--proxy-passwd=password'
Specifica il nome utente user e la password password per l'autenticazione su un server proxy. Wget codificherà questi dati con lo schema di autenticazione basic.
`--referer=url'
Include l'intestazione `Referer: url' nella richiesta HTTP. Utile per il recupero di documenti con elaborazione dal server, che assume che questi vengano sempre recuperati da browser web interattivi e terminano correttamente solo se il Referer è impostato a una delle pagine che puntano a questi documenti.
`-s'
`--save-headers'
Salva le intestazioni spedite dal server HTTP verso il file, precedendo i contenuti reali, separati da una linea vuota.
`-U agent-string'
`--user-agent=agent-string'
Si identifica come agent-string presso il server HTTP.

Il protocollo HTTP permette ai client di identificarsi usando un'intestazione User-Agent. Questo permette di distinguere il software per WWW, di solito per scopi statistici o per tracciare violazioni di protocollo. Normalmente Wget si identifica come `Wget/version', dove version è l'attuale versione di Wget.

Peraltro, alcuni siti seguono la politica di modificare la loro uscita in accordo alle informazioni ricevute con User-Agent.
Concettualmente non è una cattiva idea, ma essa è abusata da server che negano informazioni a client diversi da Mozilla o Microsoft Internet Explorer. Quest'opzione permette di cambiare la linea User-Agent spedita da Wget. L'uso di quest'opzione peraltro è sconsigliato, a meno che non si sappia cosa si sta facendo.

Opzioni FTP

`-nr'
`--dont-remove-listing'
Non rimuove i file temporanei `.listing' generati dai recuperi FTP. Normalmente questi file contengono l'elenco grezzo delle directory ricevuto da server FTP. Non rimuovere questi file può essere utile per scopi di debug, o quando si vuole controllare con facilità i contenuti di server remoti (per verificare ad esempio che un mirroring sia completo).

Si noti che anche se Wget scrive verso un nome di file noto per questo file, questo non è un "buco" nella sicurezza, se un utente rende `.listing' un link simbolico verso `/etc/passwd' o qualcosa di simile, e chiede a root (amministratore di sistemi Un*x) di lanciare Wget nella sua directory. In dipendenza dalle opzioni usate, Wget si rifiuterà di scrivere su `.listing', facendo fallire l'operazione di globbing/ricorsione/time-stamping, oppure il link simbolico verrà cancellato e sostituito dal file `.listing' corrente, oppure l'elenco verrà salvato in un file `.listing.number'.

Anche se questa situazione non è problematica, comunque, root non dovrebbe mai lanciare Wget nella directory di un utente non fidato. Un utente potrebbe fare qualcosa di semplice, come collegare `index.html' a `/etc/passwd' e chiedere a root di lanciare Wget con le opzioni `-N' o `-r', sovrascrivendo così il file.

NdT: queste considerazioni si applicano in sistemi Un*x. Non sono valide per un client eCS o OS/2: non so se possano applicarsi ad ambienti Warp Server.

`-g on/off'
`--glob=on/off'
Abilita o disabilita il "globbing" FTP. Globbing significa che è possibile usare i caratteri speciali chiamati caratteri jolly, come `*', `?', `[' e `]' per recuperare più di un file per volta nella stessa directory, come
wget ftp://gnjilux.srk.fer.hr/*.msg
Per default il globbing è attivato se l'URL contiene un carattere jolly. Quest'opzione può essere usata per attivarlo o disattivarlo permanentemente.

Si potrebbe dover quotare l'URL per proteggerla da un'espansione effettuata dalla shell in cui si lavora. Il globbing porta Wget a cercare un elenco di directory, che è specifico del sistema. Ecco perché quest'operazione funziona correttamente solo su server FTP Un*x e su quelli che emulano l'uscita del comando ls di Un*x.

`--passive-ftp'
Usa lo schema passive di recupero FTP, in cui il client inizializza la connessione. Ciò è a volte richiesto perché l'FTP funzioni dietro a firewall.
`--retr-symlinks'
Solitamente, nel recupero ricorsivo di directory FTP, se si incontra un link simbolico il file collegato non viene scaricato. Al contrario, viene creato un link simbolico corrispondente nel file system locale. Il file puntato non verrà scaricato, a meno che il download ricorsivo l'abbia incontrato separatamente e scaricato comunque.

Specificando `--retr-symlinks' i link simbolici sono attraversati e i file da essi puntati vengono recuperati. Attualmente, quest'opzione non forza Wget a interpretare link simbolici a directory e ricorrere attraverso di esse, ma in futuro dovrebbe venire potenziato a questo scopo.

Si noti che nel recupero di un file (non di una directory) che era stato specificato nella linea di comando (piuttosto che a causa di un download ricorsivo) quest'opzione non ha effetto. I link simbolici sono sempre attraversati in questo caso.

Opzioni per il download ricorsivo

`-r'
`--recursive'
Attiva il recupero ricorsivo. Si consulti Recursive Retrieval per dettagli.
`-l depth'
`--level=depth'
Specifica il massimo livello di ricorsione nel parametro depth (si veda Recupero ricorsivo). La massima profondità predefinita è 5.
`--delete-after'
Questa opzione dice a Wget di cancellare ogni file scaricato, dopo il suo scaricamento. è utile per pre-servire pagine popolari attraverso un proxy, per esempio:
wget -r -nd --delete-after http://whatever.com/~popular/page/
L'opzione `-r' serve al download ricorsivo, e `-nd' è usata per non creare subdirectory.

Si noti che `--delete-after' cancella file sulla macchina locale. Essa non invia il comando `DELé a siti FTP remoti, per esempio. Si noti anche che quando viene specificato `--delete-after', l'opzione `--convert-links' viene ignorata, così che i file `.orig' semplicemente non vengono creati in prima istanza.

`-k'
`--convert-links'
Dopo il completamento del download, converte i collegamenti nel documento per renderli disponibili per la visione in locale. Questo non influenza solo gli hyperlink visibili, ma ogni parte del documento che si colleghi a contenuti esterni, come immagini, collegamenti a fogli di stile, hyperlink a contenuti non HTML ecc.

Ogni link verrà cambiato in una di queste due vie:

Grazie a questo comportamento il browsing in locale funziona in modo affidabile: se un file collegato è stato scaricato, il link si riferirà al suo nome locale; se non è stato scaricato, il collegamento si riferirà all'indirizzo Internet completo piuttosto che presentare un collegamento danneggiato. Il fatto che i link precedenti vengano convertiti in link relativi assicura che si possa spostare la gerarchia scaricata in un'altra directory.

Si noti che solo alla fine dello scaricamento Wget può sapere quali collegamenti sono stati scaricati. Per questo motivo, il lavoro fatto con `-k' viene effettuato alla fine di tutti i download.

`-K'
`--backup-converted'
Nel convertire un file, copia la versione originale per sicurezza con un suffisso `.orig'. Influenza il comportamento di `-N' (si consulti Timestamping HTTP).
`-m'
`--mirror'
Attiva le opzioni valide per il mirroring. Quest'opzione attiva la ricorsione e il time-stamping, imposta una profondità infinita per la ricorsione e mantiene gli elenchi di directory FTP. è attualmente l'equivalente di `-r -N -l inf -nr'.
`-p'
`--page-requisites'
Quest'opzione comanda Wget di scaricare tutti i file necessari per visualizzare correttamente una data pagina HTML. Questo include cose come le immagini inline, i suoni e i fogli di stile riferiti.

Normalmente, nello scaricamento di una singola pagina HTML, i documenti che potrebbero essere necessari alla sua visualizzazione non vengono scaricati. Tramite `-r' e `-l' si può fare qualcosa, ma Wget non distingue tra documenti esterni e "inline", per cui normalmente ci si ritrova con documenti "volanti" che mancano di alcuni requisiti.

Diciamo per esempio che il documento `1.html' contanga un tag <IMG> che si riferisce a `1.gif', e un tag <A> che punta a un documento esterno `2.html'. Diciamo che `2.html', similmente, contenga un link a un'immagine `2.gif' e si colleghi a `3.html', e via così.

Eseguendo il comando

wget -r -l 2 http://site/1.html
verranno scaricati i file `1.html', `1.gif', `2.html', `2.gif', e `3.html'. Come si può vedere, a `3.html' manca il requisito `3.gif', poiché Wget conta il numero di passi (fino a 2) da `1.html' per determinare dove fermare la ricorsione. Però con il comando
wget -r -l 2 -p http://site/1.html
tutti i file elencati, incluso il file `3.gif', verranno scaricati. Similmente
wget -r -l 1 -p http://site/1.html
scaricherà `1.html', `1.gif', `2.html', e `2.gif'. Si potrebbe pensare che
wget -r -l 0 -p http://site/1.html
scarichi solo `1.html' e `1.gif', ma sfortunatamente non è così, dato che `-l 0' equivale a `-l inf', ossia ricorsione infinita. Per scaricare un solo file HTML (o una manciata di file, specificati in linea di comando o in un file di input segnalato dall'opzione `-i') e i suoi file requisiti, è sufficiente eliminare `-r' e `-l':
wget -p http://site/1.html
Notare che Wget si comporterà come se fosse specificato `-r', ma solo quella singola pagina e i suoi requisiti verranno scaricati. I collegamenti da quella pagina a documenti esterni non verranno seguiti. Attualmente, per scaricare una singola pagina e tutti i suoi requisiti (anche se esistenti su siti web separati), e assicurarsi che il blocco venga correttamente mostrato in locale, l'autore preferisce usare alcune opzioni in aggiunta a `-p':
wget -E -H -k -K -p http://site/document
Completiamo l'argomento dicendo che Wget considera "collegamento a un documento esterno" qualsiasi URL specificata in un tag <A>, <AREA> o <LINK> oltre che <LINK REL="stylesheet">.

Opzioni di accettazione/reiezione ricorsiva

`-A acclist --accept acclist'
`-R rejlist --reject rejlist'
Specifica elenchi (separati da virgole) di suffissi di nomi di file, o di schemi da accettare o rifiutare (si consulti Types of Files per dettagli).
`-D domain-list'
`--domains=domain-list'
Seleziona i domini da seguire. domain-list è una lista di domini separati da virgole. Notare che questo non attiva `-H'.
`--exclude-domains domain-list'
Specifica i domini da non seguire. Si consulti la sezione Scorrere host.
`--follow-ftp'
Segue collegamenti FTP da documenti HTML. Senza quest'opzione, Wget ignorerà tutti i collegamenti FTP.
`--follow-tags=list'
Wget ha una tavola interna di coppie HTML tag/attributo, che viene consultata mentre cerca i documenti collegati durante un recupero ricorsivo. Se un utente vuole considerare solo un sottoinsieme di questi tag, dovrebbe specificarli in una lista di elementi separati da virgole con quest'opzione.
`-G list'
`--ignore-tags=list'
È l'opposto dell'opzione `--follow-tags'. Per tralasciare certi tag HTML nella ricerca ricorsiva di documenti da scaricare, li si specifichi qui in una lista di elementi separati da virgole.

In passato, l'opzione `-G' era la miglior scelta per scaricare una pagina singola e i suoi requisiti, tramite una linea di comando come

wget -Ga,area -H -k -K -r http://site/document
Comunque, l'autore di quest'opzione ha notato una pagina con tag come <LINK REL="home" HREF="/"> e ha compreso che `-G' non è sufficiente. Non si può semplicemente dire a Wget di ignorare <LINK>, dato che così i fogli di stile non vengono scaricati. Ora la migliore scelta per il download di una singola pagina e dei suoi requisiti è l'opzione dedicata `--page-requisites'.
`-H'
`--span-hosts'
Abilita la ricerca attraverso host diversi durante il recupero ricorsivo (si consulti Scorrere host).
`-L'
`--relative'
Segue solo i link relativi. Utile nel recuperare una specifica home page senza distrazioni, nemmeno quelle provenienti dall'host medesimo (si consulti la sezione Collegamenti relativi).
`-I list'
`--include-directories=list'
Specifica un elenco di directory separate da virgole, che si desidera seguire durante il download (consultare Directory-Based Limits per dettagli). Gli elementi della lista list possono contenere i caratteri jolly.
`-X list'
`--exclude-directories=list'
Specifica una lista di directory, separate da virgole, che si desidera escludere dal download (consultare Directory-Based Limits). La lista list può contenere i caratteri jolly.
`-np'
`--no-parent'
Non sale alla directory superiore durante un recupero ricorsivo. è un'opzione utile, poiché garantisce che solo i file presenti sotto una certa gerarchia verranno scaricati. Si consulti la sezione Limiti di directory, per ulteiori dettagli.

Recupero ricorsivo

GNU Wget è in grado di attraversare pezzi del Web (o un singolo server HTTP o FTP), seguendo i collegamenti e la struttura delle directory. Viene chiamato recupero ricorsivo, o ricorsione.

Con URL HTTP, Wget recupera e legge il codice HTML dall'URL dato, i documenti, recuperando i file cui il documento HTML si riferiva, attraverso markup come href, o src. Se il file appena scaricato è di tipo text/html, anche questo verrà analizzato e seguito.

Il recupero ricorsivo di contenuti HTTP e HTML è breadth-first. Questo significa che Wget scarica prima il documento HTML richiesto, poi i documenti da esso collegati, quindi i documenti cui questi ultimi si collegano e così via. In altre parole, Wget prima di tutto scarica i documenti al livello 1, poi quelli al livello 2 e così via fino alla profondità massima specificata.

The maximum depth to which the retrieval may descend is specified with the `-l' option. The default maximum depth is five layers.

Nel recuperare ricorsivamente un URL FTP, Wget recupererà tutti i dati dalla data directory (incluse le subdirectory fino alla profondità specificata) sul server remoto, creandone un'immagine (mirror) locale. Anche il recupero FTP è limitato dal parametro depth. A differenza della ricorsione HTTP, la ricorsione FTP è effettuata in base alla profondità (depth-first).

Pre default, Wget creerà un albero locale di directory corrispondente a quello trovato sul server remoto.

Il recupero ricorsivo può avere diverse applicazioni, la più importante delle quali è il mirroring. è anche utile per presentazioni WWW, e qualsiasi altra occasione in cui sarebbe opportuno tralasciare connessioni lente di rete e memorizzare i file localmente.

Bisogna tenere in mente che i recuperi ricorsivi possono sovraccaricare il server remoto. Per questo motivo, molti amministratori di sistema li disapprovano e potrebbero bandirvi dal sito se rilevano rapidi download di grandi quantità di dati. Nello scaricare da server Internet, si consideri l'uso dell'opzione `-w' per introdurre un ritardo tra gli accessi al sistema. Il download impiegherà più tempo, ma l'amministratore del server non sarà allarmato dalla rudezza.

Ovviamente, il download ricorsivo potrebbe causare problemi anche alla macchina locale. Se lasciato a sé potrebbe facilmente riempire tutto il disco. Nello scaricare da reti locali, può prendere molta banda sul sistema, così come consumare memoria e tempo di CPU.

Si cerchi di specificare i criteri che corrispondono al tipo di download si sta cercando di effettuare. Se si vuole scaricare solo una pagina, si usi `--page-requisites' senza ricorsioni addizionali. Se si vuole scaricare il materiale in una directory si usi `-np' per evitare di scaricare materiale da altre directory. Volendo scaricare tutto quel che c'è in una directory, si usi `-l 1' per accertarsi che la ricorsione non superi il livello 1 di profondità. Si consulti la sezione Seguire collegamenti, per dettagli.

Il recupero ricorsivo va usato con cura.

Seguire collegamenti

Durante un recupero ricorsivo, si desidera non scaricare dati non necessari. Per la maggior parte dei casi l'utente ha chiaro in mente quel che vuole scaricare, e vuole che Wget segua solo collegamenti specifici.

Per esempio, se si vuole scaricare l'archivio musicale da `fly.srk.fer.hr', si vorrà scaricare tutte le home page che appaiono riferite da una parte oscura dell'archivio.

Wget dispone di molti meccanismi che permettono di calibrare finemente quali collegamenti dovrà seguire.

Scorrere host

La funzione di download ricorsivo di Wget normalmente si rifiuta di visitare host diversi da quello specificato sulla linea di comando. Questo è un comportamento ragionevole; senza di esso, qualsiasi recupero potrebbe trasformare Wget in una versione ridotta di google.

Peraltro la visita di host differenti (host spanning) è alle volte utile. è possibile che le immagini siano fornite da un server diverso. è possibile che si stia effettuando il mirroring di un sito consistente di pagine interconnesse tra tre server. è possibile che il server abbia due nomi equivalenti, e le pagine HTML si riferiscano a entrambi.

Visita tutti gli host---`-H'
L'opzione `-H' attiva lo spanning, permettendo a una esecuzione ricorsiva di Wget di visitare qualsiasi host riferito da un collegamento. A meno che non vengano applicati dei criteri di limitazione alla profondità di ricorsione, questi host estranei tipicamente si collegheranno ad altri, e così via finché Wget finirà con il prendere molti più dati di quanti se ne volevano.
Limita lo spanning a certi domini---`-D'
L'opzione `-D' permette di specificare i domini che verranno seguiti, limitando così la ricorsione solo agli host che appartengono a questi domini. Ovviamente questo ha senso solo in congiunzione con `-H'. Un esempio tipico è il download dei contenuti di `www.server.com', ma permettendo lo scaricamento dal server `images.server.com', etc.:
wget -rH -Dserver.com http://www.server.com/
Si può specificare più di un indirizzo separandoli con una virgola, per esempio `-Ddomain1.com,domain2.com'.
Non scarica da certi domini---`--exclude-domains'
Se ci sono domini che si vogliono escludere specificamente, si può usare `--exclude-domains', che accetta lo stesso tipo di argomenti di `-D', ma che escluderà i domini elencati. Per esempio, se si vogliono scaricare tutti gli host dal dominio `foo.edu', con l'eccezione di `sunsite.foo.edu', si può fare così:
wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu \
    http://www.foo.edu/

Tipi di file

Scaricando materiale dal web, spesso si vuole restringere il recupero solo a certi tipi di file. Per esempio, se si è interessati a scaricare immagini GIF, non sarà gradevole scaricare una massa di documenti PostScript (ecc.).

Wget offre due opzioni per trattare il problema. Ogni opzione presenta un nome lungo, un nome breve e il comando equivalente in `.wgetrc'.

`-A acclist'
`--accept acclist'
`accept = acclist'
L'argomento di `--accept' è una lista di estensioni di file o schemi che Wget scaricherà nel download ricorsivo. Un'estensione è la parte finale di un nome di file, e consiste di lettere, come per esempio `gif' o `.jpg'. Uno schema corrispondente conterrà caratteri jolly come `books*' o `zelazny*196[0-9]*'.

Allora, specificando `wget -A gif,jpg' Wget scaricherà soltanto i file che terminano per `gif' o `jpg', nell'esempio immagini GIF o JPEG. D'altra parte, `wget -A "zelazny*196[0-9]*"' scaricherà soltanto file che cominciano per `zelazny' e contengono numeri tra 1960 e 1969. Si consulti il manuale di riferimento della propria shell (o la guida alla linea di comando per gli utenti OS/2 - eCS, NdT) per una descrizione delle corrispondenze.

Ovviamente, è possibile combinare un numero qualsiasi di estensioni e schemi in un elenco di dati separati da virgole, passati come argomento di `-A'.

`-R rejlist'
`--reject rejlist'
`reject = rejlist'
L'opzione `--reject' lavora come `--accept', ma con logica opposta; Wget scaricherà tutti i file, eccetto quelli che corrispondono ai suffissi o agli schemi nell'elenco.

Per cui, se si vuole scaricare un'intera pagina escludendo gravosi file MPEG e .AU, si può usare `wget -R mpg,mpeg,au'. Analogamente, per scaricare tutti i file tranne quelli che cominciano per `bjork', si usi `wget -R "bjork*"'. Le virgolette servono per prevenire l'espansione dei caratteri jolly da parte della shell.

Le opzioni `-A' e `-R' possono essere combinate per un ulteriore perfezionamento nei file da recuperare. Per esempio, `wget -A "*zelazny*" -R .ps' scaricherà tutti i file che presentano `zelazny' come parte del loro nome, ma non se si tratta di file PostScript.

Si noti che queste due opzioni non riguardano il recupero di file HTML; Wget deve scaricare tutti i file HTML per sapere dove andare -- in caso contrario il recupero ricorsivo non avrebbe senso.

Limiti di directory

A parte le altre funzioni di inseguimento dei collegamenti, è spesso utile porre restrizioni a quali file recuperare, basandosi sulle directory in cui questi file sono posti. Ci possono essere molte ragioni per questo -- le home page potrebbero essere organizzate in una struttura di director ragionevole, oppure alcune directory potrebbero contenere informazioni inutili, per esempio `/cgi-bin' o `/dev'.

Wget offre tre diverse opzioni per trattare queste richieste. Ogni opzione descritta presenta un nome breve, un nome lungo, e il comando equivalente nel file `.wgetrc'.

`-I list'
`--include list'
`include_directories = list'
`-I' accetta un elenco di directory separate da virgole, per il recupero. Ogni altra directory verrà semplicemente ignorata. Le directory sono specificate con i loro percorsi assoluti.

Per cui, se si vuole scaricare da `http://host/people/bozo/' seguendo solo i collegamenti ai collegati di bozo nella directory `/peoplé e gli script in `/cgi-bin', si può scrivere

wget -I /people,/cgi-bin http://host/people/bozo/
`-X list'
`--exclude list'
`exclude_directories = list'
`-X' è l'opposto di `-I'--- contiene un elenco di directory escluse dal download. Per esempio, se non si desidera scaricare materiale da `/cgi-bin', si specifichi `-X /cgi-bin'sulla linea di comando.

Come per `-A'/`-R', queste due opzioni possono essere combinate per perfezionare lo scaricamento. Per esempio, se si vuole scaricare tutto il contenuto della gerarchia `/pub' eccetto per `/pub/worthless', si specifichi `-I/pub -X/pub/worthless'.

`-np'
`--no-parent'
`no_parent = on'
Il modo più semplice, e spesso più utile di limitare le directory è non permettere il recupero dei collegamenti che si riferiscono alla gerarchia sopra quella d'inizio, ovvero impedire la risalita verso le directory genitrici.

L'opzione `--no-parent' (in breve, `-np') è utile in questo caso. Usare quest'opzione garantisce che la gerarchia esistente non verrà mai lasciata. Supponiamo di aver lanciato Wget con

wget -r --no-parent http://somehost/~luzer/my-archive/
Si può essere sicuri del fatto che nessuno dei riferimenti a `/~his-girls-homepage/' o `/~luzer/all-my-mpegs/' verrà seguito. Solo l'archivio a cui si è interessati verrà scaricato.
Essenzialmente, `--no-parent' è simile a `-I/~luzer/my-archive', gestendo però le ridirezioni in modo più intelligente.

Collegamenti relativi

Quando viene attivata l'opzione `-L', solo i collegamenti relativi vengono sempre seguiti. I collegamenti relativi sono qui definiti come quelli che non si riferiscono alla radice del server web. Per esempio, i seguenti sono collegamenti relativi:

<a href="foo.gif">
<a href="foo/bar.gif">
<a href="../foo/bar.gif">

Questi invece non sono relativi:

<a href="/foo.gif">
<a href="/foo/bar.gif">
<a href="http://www.server.com/foo/bar.gif">

L'uso di questa opzione garantisce che il recupero ricorsivo non scorrerà gli host, anche senza l'opzione `-H'. In casi semplici, permette allo scaricamento di funzionare senza dover convertire collegamenti.

Quest'opzione probabilmente non è particolarmente utile, e potrebbe venire rimossa in una versione futura.

Collegamenti FTP

Le regole riguardanti l'FTP sono in qualche modo specifiche, dato che è necessario che lo siano. I collegamenti FTP in documenti HTML sono spesso inclusi per scopi di riferimento, e spesso non conviene scaricarli per default.

Perché i collegamenti a FTP vengano seguiti da documenti HTML, è necessario specificare l'opzione `--follow-ftp'. Fatto questo, i collegamenti FTP scorreranno anche per gli host senza interessarsi dell'opzione `-H'. Questo è logico, dato che raramente un collegamento FTP punta allo stesso host in cui risiede il server HTTP. Per ragioni similari, l'opzione `-L' non ha effetto su questi scaricamenti. D'altra parte le opzioni di accettazione dei domini (`-D') e le regole di suffisso (`-A' e `-R') funzionano correttamente.

Si noti inoltre che i collegamenti a directory FTP seguiti non verranno recuperati in modo ricorsivo.

Time-Stamping

Uno degli aspetti più importanti nel mirroring di informazioni dalla rete è l'aggiornamento dei propri archivi.

Scaricare un intero archivio ripetutamente solo per rimpiazzare pochi file modificati è costoso, in termini di banda e di denaro, e di tempo necessario all'aggiornamento. Ecco perché tutti i tool di mirroring forniscono una funzione di aggiornamento incrementale.

Un meccanismo come questo implica che il server remoto viene analizzato in cerca di nuovi file. Solo questi nuovi file verranno scaricati al posto dei precedenti.

Un file è considerato nuovo se risponde a una di queste condizioni:

  1. Non esiste localmente un file con lo stesso nome.
  2. Esiste localmente un file con lo stesso nome, ma il file remoto è stato modificato più di recente rispetto al file locale.

Per implementare questo controllo, il programma deve conoscere la data dell'ultima modifica dei file locale e remoto. Quest'informazione viene chiamata impronta temporale o time-stamp del file.

Il time-stamping in GNU Wget viene attivato usando `--timestamping' (`-N'), oppure inserendo la direttiva timestamping = on in `.wgetrc'. Con questa opzione, per ogni file da scaricare, Wget controlla che esista un file locale con lo stesso nome. Se esiste, e il file remoto è più vecchio del file locale, Wget non eseguirà lo scaricamento.

Se il file locale non esiste, o le dimensioni dei file non corrispondono, Wget scaricherà il file remoto senza interessarsi delle impronte temporali.

Uso del timestamping

L'uso del time-stamping è semplice. Si voglia per esempio scaricare un file mantenendone la data di modifica.

wget -S http://www.gnu.ai.mit.edu/

Un semplice ls -l (o dir /p in CMD.EXE, NdT per gli utenti eCS o OS/2) mostra che la data di modifica del file locale è uguale allo stato dell'intestazione Last-Modified, così come viene ritornata dal server. Come si può vedere, le informazioni di tempo sono preservate in locale anche senza `-N' (almeno per l'HTTP).

Diversi giorni dopo, si vuole che Wget controlli se il file remoto è stato modificato, e lo scarichi se necessario.

wget -N http://www.gnu.ai.mit.edu/

Wget chiederà al server la data dell'ultima modifica. Se il file locale ha la stessa impronta temporale di quello remoto, o una nuova, il file remoto non verrà recuperato. Se però il file remoto è più recente, Wget procederà al suo scaricamento.

Lo stesso vale per l'FTP. Per esempio

wget "ftp://ftp.ifi.uio.no/pub/emacs/gnus/*"

(Le virgolette attorno all'URL servono affinché la shell non cerchi di interpretare il carattere `*'.)

Dopo il download, un elenco locale di directory mostrerà che le informazioni di tempo corrispondono a quelle sul server. Rilanciando il comando con l'opzione `-N', Wget recupererà nuovamente solo i file modificati dalla data dell'ultimo scaricamento.

Volendo per esempio un mirror dell'archivio GNU ogni settimana, si vorrebbe usare un comando come questo, settimanalmente:

wget --timestamping -r ftp://ftp.gnu.org/pub/gnu/

Notare che il time-stamping funziona solo per i file per i quali il server fornisce un'impronta. Per l'HTTP, la cosa dipende dal recupero di un'intestazione Last-Modified. Per l'FTP, dipende dal recuperare o meno un elenco di directory con date in un formato comprensibile da Wget (consultare Timestamping FTP).

Timestamping HTTP

Il time-stamping in HTTP è implementato con il controllo dell'intestazione Last-Modified. Se si desidera recuperare il file `foo.html' tramite HTTP, Wget controllerà che il file `foo.html' esista localmente. Se non è così, `foo.html' verrà comunque scaricato.

Se il file esiste in locale, Wget controllerà prima di tutto la sua impronta temporale locale (similmente al risultato di ls -l), quindi invierà una richiesta HEAD al server remoto, richiedendogli informazioni sul file remoto.

L'header Last-Modified viene esaminato per comprendere quale file è stato modificato più di recente (il che lo rende "nuovo"). Se il file remoto è più recente, verrà scaricato; se è meno recente, Wget si fermerà.(2)

Se viene specificato `--backup-converted' (`-K') in congiunzione con `-N', il file `X' del server viene confrontato con il file locale `X.orig', se esistente, piuttosto che con il file locale `X', che sarà sempre differente se è stato convertito tramite l'opzione `--convert-links' (`-k').

Ragionevolmente, il time-stamping HTTP dovrebbe essere implementato usando la richiesta If-Modified-Since.

Timestamping FTP

In teoria, il time-stamping FTP funziona come quello HTTP, tranne per il fatto che in FTP non esistono le intestazioni: le impronte temporali devono essere derivate dall'elenco di directory.

Se un download FTP è ricorsivo o usa il globbing, Wget userà il comando FTP LIST per avere un elenco di file per la directory contenente i file desiderati. Tenterà di analizzare l'elenco, trattandolo come il risultato di un comando Unix ls -l, estraendo le impronte temporali.
Le operazioni rimanenti sono le stesse dell'HTTP. Si noti che nel recupero di file singoli da un server FTP senza globbing o ricorsione, gli elenchi di file non verranno scaricati (e quindi non ci saranno impronte temporali) a meno che non si usi `-N'.

Ritenere che ogni elenco di directory rispecchi lo stile Unix può sembrare molto limitante, ma non è così in pratica, dato che molti server FTP non Unix usano il formato Unix, poiché molti client (tutti?) lo comprendono. Si tenga presente che il RFC959 non definisce un metodo standard per ricevere un elenco di file, tralasciando le impronte temporali. Si spera che in futuro uno standard definisca questi particolari.

Un'altra soluzione non standard include l'uso del comando MDTM, supportato da alcuni server FTP (incluso il popolare wu-ftpd), che ritorna il tempo esatto del file specificato. Wget potrebbe supportare questo comando in futuro.

File di avvio

Una volta saputo come cambiare le impostazioni predefinite di Wget tramite la linea di comando, si può voler rendere permanenti alcune opzioni. Ciò è fattibile in modo comodo creando il file di avvio di Wget, `.wgetrc'.

A parte `.wgetrc', che è il file di inizializzazione "principale" di Wget, è conveniente avere una sede particolare per immagazzinare password. Così Wget legge e interpreta i contenuti di `$HOME/.netrc', se questa viene trovata. Il formato di `.netrc' può essere consultato nella documentazione dei sistemi Unix.

Wget legge `.wgetrc' all'avvio, riconoscendo un insieme limitato di comandi.

Posizione di Wgetrc

Durante l'inizializzazione, Wget cerca un file di avvio globale, per default `/usr/local/etc/wgetrc' (o con prefissi diversi da `/usr/local', se Wget non è stato installato là --- è il caso delle macchine eCS-OS/2) e legge i comandi ivi presenti, se esiste.

Quindi, Wget controllerà la presenza di un file utente. Se la variabile d'ambiente WGETRC è settata, Wget tenterà di leggere quel file. In caso di fallimento non saranno effettuati altri tentativi.

Se WGETRC non è settata, Wget cercherà di caricare il file `$HOME/.wgetrc'.

Il fatto che le impostazioni utente vengano caricate dopo quelle valide per il sistema significa che, in caso di conflitto, i comandi dell'utente hanno la precedenza su quelli validi a livello di sistema (in `/usr/local/etc/wgetrc' per default). Via gli amministratori fascisti!! :))) --- Ovviamente questo discorso non è valido per l'utenza OS/2 - eCS, essendo singoli client.

Sintassi di Wgetrc

La sintassi di un comando di wgetrc è semplice:

variabile = valore

La variabile viene anche chiamata comando. I valori validi differiscono per i vari comandi.

I comandi non fanno distinzione tra maiuscole e minuscole, e non tengono conto del carattere sottolineatura. Pertanto, `DIr__PrefiX' è uguale a `dirprefix'. Linee vuote, linee che cominciano per `#' e linee contenenti solo spazi sono ignorate.

Comandi che accettano un elenco di valori separati da virgole cancelleranno tale elenco se il comando è vuoto. Pertanto, se si vuole per esempio annullare la lista di reiezioni specificata nel `wgetrc' globale, si può fare così:

reject =

Comandi di Wgetrc

Sotto è fornito l'elenco completo dei comandi. I valori validi sono elencati dopo il `='. Valori booleani possono essere settati o azzerati usando `on' e `off', o `1' e `0'. Uno stile differente di booleano permesso in alcuni casi è il lockable Boolean, che può essere impostato a `on', `off', `always', o `never'. Se un'opzione è impostata a `always' o `never', tale valore verrà bloccato (fissato) per la durata dell'intera invocazione di Wget; le opzioni della linea di comando non avranno precedenza.

Alcuni comandi accettano valori pseudo-arbitrari. Valori address possono essere nomi di host, o indirizzi IP. n può essere qualsiasi intero positivo, o `inf' per "infinito" (dove appropriato). Valori string possono essere stringhe non vuote.

La maggior parte di questi comandi ha equivalenze alla linea di comando (consultare Invocazione), alcuni dei più oscuri o meno usati non ne ha.

accept/reject = string
Uguale a `-A'/`-R' (si veda Tipi di file).
add_hostdir = on/off
Abilita/disabilita nomi di file prefissati da nomi host. `-nH' disattiva l'opzione.
continue = on/off
Se posto a on, forza la continuazione dei recuperi di file parzialmente scaricati. Si consulti `-c' prima dell'impostazione.
background = on/off
Abilita/disabilita l'attività in secondo piano -- uguale a `-b' (che l'abilita).
backup_converted = on/off
Abilita/disabilita il salvataggio pre-convertito di file con il suffisso `.orig'---uguale a `-K' (che l'abilita).
base = string
Considera URL relativi in file di ingresso URL interpretati come HTML, come relativi a string; è l'equivalente di `-B'.
bind_address = address
Effettua un "bind" a address, come l'opzione `--bind-address'.
cache = on/off
Quando impostato a on, disabilita il server caching. Si consulti l'opzione `-C'.
convert links = on/off
Converte i collegamenti non relativi localmente. Equivale a `-k'.
cookies = on/off
Se impostato a "off", disabilita i cookie. Consultare l'opzione `--cookies'.
load_cookies = file
Carica i cookie dal file file. Consultare `--load-cookies'.
save_cookies = file
Salva i cookie nel file file. Si consulti `--save-cookies'.
cut_dirs = n
Ignora n componenti di directory remote.
debug = on/off
Modalità di debug, si veda `-d'.
delete_after = on/off
Cancella dopo il download -- equivale a `--delete-after'.
dir_prefix = string
Segnala la radice dell'albero di directory; equivale a `-P'.
dirstruct = on/off
Attiva o disattiva dirstruct -- equivale a `-x' o `-nd', rispettivamente.
domains = string
Equivale a `-D' (consultare Scorrere host).
dot_bytes = n
Specifica il numero di byte "contenuti" in un punto, come mostrato durante il recupero (1024 per default). Si può porre un suffisso `k' o `m', rappresentante rispettivamente i kilobyte o i megabyte. Tramite le impostazioni "dot" si può regolare il diagramma del download per le proprie necessità, oppure si possono usare gli stili predefiniti (consultare Opzioni di download).
dots_in_line = n
Specifica il numero di punti stampati in ogni linea durante il recupero (50 per default).
dot_spacing = n
Specifica il numero di punti in un singolo gruppo (10 per default).
exclude_directories = string
Specifica un elenco di directory, separate da virgole, che si desidera escludere dallo scaricamento; equivale a `-X' (consultare Limiti di directory).
exclude_domains = string
Equivale a `--exclude-domains' (vedere Scorrere host).
follow_ftp = on/off
Segue collegamenti FTP da documenti HTML - equivale a `--follow-ftp'.
follow_tags = string
Segue solo certi tag HTML nel recupero ricorsivo, similmente a `--follow-tags'.
force_html = on/off
Se posto a on, forza il trattamento del file di ingresso come documento HTML; equivale a `-F'.
ftp_proxy = string
Usa string come proxy FTP, invece di quello specificato nelle variabili d'ambiente.
glob = on/off
Attiva/disattiva il globbing - equivale a `-g'.
header = string
Definisce un'intestazione HTTP aggiuntiva, come like `--header'.
html_extension = on/off
Aggiunge un'estensione `.html' a file di tipo `text/html' che ne sono privi, come l'opzione `-é.
http_passwd = string
Imposta la password HTTP.
http_proxy = string
Usa string come proxy HTTP, al posto di quello definito nelle variabili d'ambiente.
http_user = string
Imposta l'utente HTTP a string.
ignore_length = on/off
Se viene impostato a on, ignora le intestazioni Content-Length; equivale a `--ignore-length'.
ignore_tags = string
Ignora certi tag HTML nel recupero ricorsivo, equivalentemente a `-G' / `--ignore-tags'.
include_directories = string
Specifica un elenco di directory separate da virgole che si desidera seguire durante il download - equivale a `-I'.
input = string
Legge URL da string, come `-i'.
kill_longer = on/off
Considera i dati oltre quelli specificati in un'intestazione "content-length" come non validi (e tenta un nuovo recupero). Il comportamento predefinito è di salvare tanti dati quanti ce ne sono, se sono in numero maggiore o uguale a quanto specificato in Content-Length.
logfile = string
Imposta il log file -- equivale a `-o'.
login = string
Nome utente sulla macchina remota, per FTP. Il valore predefinito è `anonymous'.
mirror = on/off
Attiva o disattiva il mirroring. Equivale a `-m'.
netrc = on/off
Legge / non legge netrc.
noclobber = on/off
Equivale a `-nc'.
no_parent = on/off
Disabilita il recupero al di fuori della gerarchia di directory, come per `--no-parent' (si veda Limiti di directory).
no_proxy = string
Usa string come un elenco di domini separati da virgole, da evitare nel caricamento del proxy, invece di quello specificato nell'ambiente.
output_document = string
Imposta il nome di file in uscita - equivale a `-O'.
page_requisites = on/off
Scarica tutti i documenti necessari a una singola pagina HTML per essere resa correttamente - equivale a `-p'.
passive_ftp = on/off/always/never
Imposta il modo FTP passivo - equivale a `--passive-ftp'. Alcuni script e moduli Perl (`.pm') scaricano file usando `wget --passive-ftp'. Se una firewall non li accetta, si può impostare `passive_ftp = never' per prevenire i valori dalla linea di comando.
passwd = string
Imposta la password FTP a password. Senza quest'impostazione, la password ha valore predefinito `username@hostname.domainname'.
progress = string
Imposta il tipo di indicatore di progresso. Valori legali sono "dot" e "bar".
proxy_user = string
Imposta il nome utente per l'autenticazione proxy a string, come `--proxy-user'.
proxy_passwd = string
Imposta la password di autenticazione proxy a string, come `--proxy-passwd'.
referer = string
Imposta l'intestazione HTTP `Referer:' come l'opzione `--referer'. (Si noti che il tizio che ha scritto le specifiche HTTP ha scritto male la parola "referrer".)
quiet = on/off
Modalità silenziosa; equivale a `-q'.
quota = quota
Specifica la quota di download, utile da porre nel file `wgetrc' globale (ovviamente la distinzione non si pone per sistemi eCS - OS/2, NdT). Quando viene specificata una quota, Wget interromperà lo scaricamento dopo che esso ha superato la quota. La quota può essere specificata in byte, oppure tramite i suffissi `k' (kB) o `m' (MB). Pertanto, `quota = 5m' imposterà la quota a 5 MByte. Si noti che le impostazioni utente hanno precedenza su quelle di sistema.
reclevel = n
Livello di ricorsione - equivale a `-l'.
recursive = on/off
Attiva / disattiva la ricorsione - equivale a `-r'.
relative_only = on/off
Segue solo collegamenti relativi, come `-L' (vedere Collegamenti relativi).
remove_listing = on/off
Se posto a on, rimuove gli elenchi di directory FTP presi da Wget. Impostarlo a "off" equivale all'uso dell'opzione `-nr'.
retr_symlinks = on/off
Se posto a on, recupera collegamenti simbolici ("ln") come file piani; equivale a `--retr-symlinks'.
robots = on/off
Usa (o non usa) il file `/robots.txt' (Robot). Ci si assicuri di sapere cosa si sta facendo prima di cambiare il valore predefinito (`on').
server_response = on/off
Sceglie se stampare o meno le risposte dei server HTTP ed FTP; equivale a `-S'.
span_hosts = on/off
Equivale a `-H'.
timeout = n
Imposta il valore di timeout - equivale a `-T'.
timestamping = on/off
Attiva o disattiva il time-stamping. Equivale a `-N' (si veda Time-Stamping).
tries = n
Imposta il numero di tentativi per URL - equivale a `-t'.
use_proxy = on/off
Attiva o disattiva il supporto proxy. Equivale a `-Y'.
verbose = on/off
Modalità verbosa. Equivale a `-v'/`-nv'.
wait = n
Attende n secondi tra un recupero e l'altro; equivale a `-w'.
waitretry = n
Aspetta fino a n secondi tra tentativi di recupero su download falliti; equivale a `--waitretry'. Si noti che l'opzione è attiva per default nel file `wgetrc' globale.
randomwait = on/off
Attiva o disattiva l'attesa casuale tra una richiesta e l'altra. Equivale a `--random-wait'.

File di esempio

Ecco il file di inizializzazione di esempio dato nella distribuzione. Esso è diviso in due sezioni; una per l'uso globale (valido come file di avvio globale), e una per l'uso locale (utile come `$HOME/.wgetrc'). Si presti attenzione alle modifiche che si eseguono.

Si noti che quasi tutte le linee sono commentate. Perché un comando abbia effetto, si deve rimuovere il carattere `#' all'inizio della linea.

###
### File .wgetrc di esempio
###

## Questo file può essere usato per cambiare il comportamento di wget o per
## evitare di dover scrivere molte opzioni in linea di comando. Questo file
## non contiene una completa lista dei comandi -- si consulti il manuale
## per vedere cosa può essere inserito qui.
## 
## Il file di inizializzazione di Wget può essere posto in /usr/local/etc/wgetrc
## (globale) o $HOME/.wgetrc (per un singolo utente).
##
## Per usare le impostazioni in questo file, si deve de-commentarle,
## così come cambiarle in molti casi, dato che i valori nelle linee commentate
## sono valori predefiniti (per esempio, "off").

##
## Impostazioni globali (utili per l'impostazione in /usr/local/etc/wgetrc).
## Attenzione a cosa si fa qui, le impostazioni potrebbero ridurre le funzioni
## di wget, e farlo comportare in modo contrario alla documentazione:
##

# Si può impostare la quota di scaricamento per principianti specificando un
# valore, eventualmente seguito da 'K' (kilobytes) o 'M' (megabytes). La quota
# predefinita è illimitata.
#quota = inf

# Si può abbassare (o innalzare) il numero predefinito di tentativi nello
# scaricamento di un file (default, 20).
#tries = 20

# Abbassare la massima profondità nel download ricorsivo è utile per evitare
# che un principiante vada troppo "in giù" nell'avviare un download
# ricorsivo.  Il valore predefinito è 5.
#reclevel = 5

# Molti siti si trovano dietro firewall che non permettono l'inizio di
# connessioni dall'esterno.  Su questi siti è necessario usare la funzione
# "passiva" dell'FTP. Se ci si trova dietro una simile firewall, si può
# attivare tale funzione per far usare la modalità passiva a Wget.
#passive_ftp = off

# Il comando "wait" sotto fa sì che Wget aspetti tra una connessione e l'altra.
# Se, invece, si vuole che Wget aspetti solo tra una riprova e l'altra di un
# download fallito, si imposti waitretry al massimo numero di secondi da attendere
# (Wget userà il "linear backoff", aspettando un secondo dopo il primo fallimento
# su un file, 2 secondi dopo il secondo fallimento, etc. fino a tale massimo).
waitretry = 10

##
## Impostazioni locali (per un utente, valide nel suo $HOME/.wgetrc). è
## *altamente* sconsigliato porre tali impostazioni nel file globale, dato che
## esse sono potenzialmente pericolose per l'"utente normale".
##
## Anche nel preparare il proprio ~/.wgetrc, sarebbe bene sapere bene cosa
## si sta facendo.
##

# Impostare a on per usare il timestamping:
#timestamping = off

# è bene far sì che Wget mandi il proprio indirizzo email in un'intestazione
# `From:' con la richiesta (così che l'amministratore di sistema possa 
# contattarvi in caso di errore). Wget *non* manda `From:' inizialmente.
#header = From: Your Name <username@site.domain>

# Si possono impostare altre intestazioni, come Accept-Language.  Accept-Language
# *non* è spedito, per default.
#header = Accept-Language: en

# Si possono impostare i proxy predefiniti per l'HTTP e l'FTP.
# Essi prevalgono sui valori impostati nelle variabili d'ambiente.
#http_proxy = http://proxy.yoyodyne.com:18023/
#ftp_proxy = http://proxy.yoyodyne.com:18023/

# Si imposti questo a off se non si vogliono usare i proxy.
#use_proxy = on

# Si può personalizzare il rapporto sugli scaricamenti. Opzioni valide sono,
# default, binary, mega e micro.
#dot_style = default

# Impostare questo valore a off fa in modo che Wget non scarichi /robots.txt.
# Ci si assicuri di sapere *bene* cosa è /robots.txt e come viene usato, prima
# di cambiare il default!
#robots = on

# Può essere utile far attendere Wget tra le connessioni. Impostare questa
#voce al numero di secondi di attesa desiderati.
#wait = 0

# Si può forzare la creazione della struttura di directory, anche se viene
# recuperata una sola directory, impostando questa variabile a on.
#dirstruct = off

# Si può attivare il download ricorsivo per default (da non fare se non si
# sa bene cosa significa) impostando questa variabile a on.
#recursive = off

# Per copiare sempre il file X come X.orig prima di convertirne i collegamenti
# (grazie a to -k / --convert-links / convert_links = on),
# si imposti questa variabile a on:
#backup_converted = off

# Perché Wget segua collegamenti FTP da file HTML per default, impostare
# questa variabile a on:
#follow_ftp = off

Esempi

Gli esempi sono divisi in tre sezioni, basate generalmente sulla loro complessità.

Uso semplice

Uso avanzato

Uso specializzato

Varie

Questo capitolo contiene il materiale che non ha posto altrove.

Proxy

I Proxy sono server HTTP speciali, designati per trasferire dati da server remoti a client locali. Un uso tipico dei proxy è quello di alleggerire il carico di rete per utenti dietro una connessione lenta. Ciò si ottiene canalizzando tutte le richieste HTTP ed FTP attraverso il proxy, che pone in una cache i dati trasferiti. Quando una risorsa in cache viene richiesta una seconda volta, il proxy ritornerà i dati dalla cache. Un altro uso dei proxy è fatto dalle compagnie che separano (per motivi di sicurezza) le loro reti interne dal resto di Internet. Per ottenere dati dal Web, gli utenti si connettono e acquisiscono i dati remoti tramite un proxy autorizzato.

Wget supporta i proxy per HTTP ed FTP. La via standard di sopecificare la locazione di un proxy, riconosciuta da Wget, è l'uso delle seguenti variabili d'ambiente:

http_proxy
Questa variabile contiene l'URL del proxy per le connessioni HTTP.
ftp_proxy
Questa variabile contiene l'URL del proxy per le connessioni FTP. è molto comune per queste due variabili avere lo stesso valore.
no_proxy
Questa variabile deve contenere un elenco di estensioni di dominio, separate da virgole, per le quali il proxy non va usato. Per esempio, se il valore di no_proxy è `.mit.edu', il proxy non verrà usato per recuperare documenti dal MIT.

Oltre alle variabili d'ambiente, la locazione del proxy e le impostazioni possono essere specificate direttamente da Wget.

`-Y on/off'
`--proxy=on/off'
`proxy = on/off'
Questa opzione può essere usata per attivare o disattivare il supporto proxy. Il supporto è attivo per default, se le variabili d'ambiente appropriate sono state impostate.
`http_proxy = URL'
`ftp_proxy = URL'
`no_proxy = string'
Queste variabili del file d'avvio permettono di avere precedenza sulle impostazioni del proxy specificate dall'ambiente.

Alcuni server proxy richiedono un'autorizzazione all'uso. L'autorizzazione consiste di un nome utente username e di una password, che devono essere spedite da Wget. Come per l'autorizzazione HTTP esistono parecchi schemi di autorizzazione. Per l'autorizzazione proxy solo lo schema Basic è implementato attualmente.

Si possono specificare il nome utente e la password tramite l'URL del proxy o tramite le opzioni della linea di comando. Supponendo che il proxy della compagnia sia posto a `proxy.company.com' alla porta 8001, una locazione URL di proxy contenente i dati dell'autorizzazione potrebbe essere come questa:

http://hniksic:mypassword@proxy.company.com:8001/

Alternativamente si possono usare le opzioni `proxy-user' e `proxy-password', e le impostazioni equivalenti di `.wgetrc' proxy_user e proxy_passwd per impostare il nome utente e la password per il proxy.

Distribuzione

Come tutte le utilità GNU, l'ultima versione di Wget può essere trovata all'archivio principale GNU prep.ai.mit.edu, e ai suoi mirror. Per esempio Wget 1.8.1 può essere trovato all'url ftp://prep.ai.mit.edu/gnu/wget/wget-1.8.1.tar.gz. La versione per OS/2 - eCS è rintracciabile al sito hobbes.nmsu.edu oppure http://unixos2.org.

Mailing List

Wget ha una mailing list all'email wget@sunsite.dk, grazie a Karsten Thygesen. La mailing list serve per discussioni sulle funzioni di Wget e sul web, per riportare bug di Wget (quelli che si ritengono interessanti per il pubblico) e annunci. Siete i benvenuti: più siamo meglio è!

Per iscriversi alla mailing list, si mandi una mail all'indirizzo wget-subscribe@sunsite.dk, con la parola `subscribé nella linea dell'oggetto della mail. Per de-iscriversi basta mandare un'email a wget-unsubscribe@sunsite.dk.

La mailing list è archiviata all'url http://fly.srk.fer.hr/archive/wget. Un archivio alternativo è disponibile a {http://www.mail-archive.com/wget%40sunsite.auc.dk/

Riportare bug

Bug report sono benvenuti all'indirizzo bug-wget@gnu.org.

Prima di riportare un bug, si cerchino di seguire alcune semplici linee guida.

  1. Si cerchi di accertarsi che il comportamento visto è effettivamente un bug. Se Wget abortisce (crash), è un bug. Se Wget non si comporta come documentato, è un bug. Se le cose funzionano in modo strano, ma non si è sicuri di come vadano, potrebbe essere un bug.
  2. Si cerchi di ripetere il bug in semplici circostanze, se possibile. Per esempio, se Wget abortisce nell'eseguire `wget -rl0 -kKE -t5 -Y0 http://yoyodyne.com -o /tmp/log', si dovrebbe cercare di scoprire se il crash è ripetibile, e se avviene con un insieme più semplice di opzioni. Si potrebbe cercare di iniziare il download alla pagina dove è avvenuto il crash, per vedere se quella pagina in qualche modo ha causato il crash.

    Inoltre, mentre potrebbe interessarmi conoscere i contenuti del file `.wgetrc', il solo riportare il messaggio di debug è forse una cattiva idea. Invece, sarebbe bene prima cercare di capire se il bug si ripete dopo aver portato via `.wgetrc'. Solo se si capisce che le impostazioni di `.wgetrc' influenzano il bug, mi si mandino le parti rilevanti del file.

  3. Si lanci Wget con l'opzione `-d' e si mandi il log (o le sue parti più significative). Se Wget è stato compilato senza supporto al debug, lo si ricompili. è molto più semplice tracciare gli errori con il supporto al debug attivo.
  4. Se Wget ha abortito, si provi a lanciarlo con un debugger, come per esempio gdb `which wget` core e scrivendo where per avere un backtrace.

Portabilità

Wget usa GNU Autoconf per la configurazione e la compilazione, ed evita l'uso di funzioni speciali-ultra-mega-favolose di dialetti di Unix, per cui dovrebbe essere compilabile e funzionante su tutti gli Unix più comuni (e non, come per esempio su OS/2 e su eCS, NdT).

Varie versioni di Wget sono state compilate e controllate sotto molte varianti di Unix, inclusi Solaris, Linux, SunOS, OSF (aka Digital Unix), Ultrix, *BSD, IRIX, e altri; si consulti il file `MACHINES' nella directory di distribuzione per avere una lista completa. Se si riesce a compilare Wget su un'architettura non elencata qui, si prega di comunicarlo.

Wget dovrebbe eseguire correttemante anche su altri sistemi Unix, non elencati in `MACHINES'. Se no, si prega di comunicarlo.

Grazie a gentili collaboratori, questa versione di Wget può essere compilata e funziona su piattaforme Microsoft Windows 95 e Windows NT. è stato compilato con successo usando i compilatori MS Visual C++ 4.0, Watcom, e Borland C, usando Winsock come software di networking. Naturalmente è ridotto, dato che alcune funzioni sono disponibili solo in Unix, ma dovrebbe funzionare come sostituto per chi è bloccato a Windows. Si noti che il port per Windows non è controllato né mantenuto da me... Tutte le domande e i problemi dovrebbero essere riportati alla mailing list di Wget, all'email wget@sunsite.dk.

Segnali

Lo scopo di Wget è quello di lavorare in secondo piano, per cui esso riceve il segnale di hang-up SIGHUP e lo ignora. Se l'uscita va allo standard output, viene ridiretta a un file chiamato `wget-log'. In altri casi SIGHUP viene ignorato. Questo è conveniente se si desidera ridirigere l'uscita di Wget dopo averlo lanciato.

$ wget http://www.ifi.uio.no/~larsi/gnus.tar.gz &
$ kill -HUP %%     # Redirect the output to wget-log

Oltre a ciò, Wget non tenta di interferire con i segnali. C-c, kill -TERM e kill -KILL dovrebbero poter uccidere il processo.
NdT: queste considerazioni possono non applicarsi a OS/2 - eCS, o quantomeno non nello stesso modo. Non ho effettuato prove in merito.

Appendici

Questo capitolo contiene riferimenti che possono rivelarsi utili.

Robot

È molto semplice portare Wget a vagbondare per un sito, prendendo tutti i dati disponibili. `wget -r site' è sufficiente. Ottimo? Non per l'amministratore di sistema.

Se Wget recupera pagine statiche, il problema non è significativo. Ma per Wget non esistono differenze tra una pagina statica e un CGI, molto più esigente in termini di risorse. Per esempio, un sito che conosco ha una sezione gestita da un, ehm, rognoso script CGI che converte tutti i file di tipo Info in HTML. Lo script può ridurre la macchina in ginocchio senza fornire niente di utile a chi scarica.

Per casi del genere sono stati sviluppati vari schemi di esclusione di robot, come mezzo per gli amministratori di sistema e gli autori di documenti per proteggere parti scelte dei propri siti dal vagabondare di robot.

Il meccanismo più popolare è il Robot Exclusion Standard, o RES, scritto da Martijn Koster et al. nel 1994. Esso specifica il formato di un file di testo contenente direttive che istruiscono il robot su quali percorsi di URL evitare. Per essere trovato dai robot, le specifiche devono essere poste in `/robots.txt' nella directory radice del server, un file che i robot scaricano ed elaborano.

Wget supporta le specifiche RES nel download ricorsivo. Così, dando:

wget -r http://www.server.com/

Innanzitutto verrà scaricato l'indice di `www.server.com'. Se Wget nota che deve scaricare più documenti da tale server, richiederà allo stesso il file `http://www.server.com/robots.txt' e, se trovato, lo userà per i download seguenti. `robots.txt' viene scaricato una volta sola per ogni server.

Fino alla versione 1.8, Wget supportava la prima versione dello standard, scritta da Martijn Koster nel 1994 e disponibile all'url http://www.robotstxt.org/wc/norobots.html. Dalla versione 1.8, Wget ha aggiunto il supporto delle direttive addizionali specificate nella bozza Internet `<draft-koster-robots-00.txt>' intitolata " Un metodo per il controllo dei Robot web". La bozza, che per quanto ne so non è mai arrivata al grado di RFC, è disponibile a http://www.robotstxt.org/wc/norobots-rfc.txt.

Questo manuale non include più il testo del RES.

Il secondo meccanismo, meno noto, abilita l'autore di un singolo documento a specificare se vuole che i collegamenti a questo file siano seguiti da un robot. Ciò si ottiene mediante un META tag, come nel seguente esempio:

<meta name="robots" content="nofollow">

Questo meccanismo è spiegato in http://www.robotstxt.org/wc/meta-user.html. Wget supporta questo metodo di esclusione, in aggiunta alla classica esclusione tramite `/robots.txt'.

Considerazioni di sicurezza

Nell'uso di Wget, bisogna tener presente che esso spedisce password non crittografate in rete, cosa che può porre problemi di sicurezza. Ecco i problemi principali, e alcune soluzioni.

  1. Le password nella linea di comando sono visibili usando il comando ps (sotto Unix). Se questo è un problema, si eviti di porre password in linea di comando - per esempio si può usare il file `.netrc'.
  2. Usando lo schema di autenticazione basic, password non criptate sono trasmesse attraverso i router e i gateway della rete.
  3. Anche le password FTP non sono criptate. Non c'è una soluzione valida al momento.
  4. Anche se l'uscita "normale" di wget cerca di nascondere le password, i log di debug le mostrano, in tutte le forme. Questo problema si evita prestando attenzione nello spedire log di debug (anche spedendoli a me).

Contributi

GNU Wget è stato scritto da Hrvoje Nik@v{s}i'{c} (hniksic@arsdigita.com). Comunque, il suo sviluppo non potrebbe essere arrivato dov'è, se non fosse stato per l'aiuto di molte persone, con bug report, proposte di funzioni, correzioni o lettere di ringraziamento.

Ringraziamenti speciali alle seguenti persone (senza ordine):

Le seguenti persone hanno fornito correzioni, rapporti su bug/compilazioni, suggerimenti utili, servizi di beta testing, posta e tutto quel che rende così divertente la manutenzione di un programma:

Ian Abbott,
Tim Adam,
Adrian Aichner,
Martin Baehr,
Dieter Baron,
Roger Beeman,
Dan Berger,
T. Bharath,
Paul Bludov,
Daniel Bodea,
Mark Boyns,
John Burden,
Wanderlei Cavassin,
Gilles Cedoc,
Tim Charron,
Noel Cragg,
Kristijan @v{C}onka@v{s},
John Daily,
Andrew Davison,
Andrew Deryabin,
Ulrich Drepper,
Marc Duponcheel,
Damir D@v{z}eko,
Alan Eldridge,
Aleksandar Erkalovi'{c},
Andy Eskilsson,
Christian Fraenkel,
Masashi Fujita,
Howard Gayle,
Marcel Gerrits,
Lemble Gregory,
Hans Grobler,
Mathieu Guillaume,
Dan Harkless,
Herold Heiko,
Jochen Hein,
Karl Heuer,
HIROSE Masaaki,
Gregor Hoffleit,
Erik Magnus Hulthen,
Richard Huveneers,
Jonas Jensen,
Simon Josefsson,
Mario Juri'{c},
Hack Kampbj@o rn,
Const Kaplinsky,
Goran Kezunovi'{c},
Robert Kleine,
KOJIMA Haime,
Fila Kolodny,
Alexander Kourakos,
Martin Kraemer,
Hrvoje Lacko,
Daniel S. Lewart,
Nicol'{a}s Lichtmeier,
Dave Love,
Alexander V. Lukyanov,
Jordan Mendelson,
Lin Zhe Min,
Tim Mooney,
Simon Munton,
Charlie Negyesi,
R. K. Owen,
Andrew Pollock,
Steve Pothier,
Jan P@v{r}ikryl,
Marin Purgar,
Csaba R'{a}duly,
Keith Refson,
Tyler Riddle,
Tobias Ringstrom,
Edward J. Sabol,
Heinz Salzmann,
Robert Schmidt,
Andreas Schwab,
Chris Seawood,
Toomas Soome,
Tage Stabell-Kulo,
Sven Sternberger,
Markus Strasser,
John Summerfield,
Szakacsits Szabolcs,
Mike Thomas,
Philipp Thomas,
Dave Turner,
Russell Vincent,
Charles G Waldman,
Douglas E. Wegscheid,
Jasmin Zainul,
Bojan @v{Z}drnja,
Kristijan Zimmer.

Le mie scuse a coloro che ho accidentalmente dimenticato, e molti ringraziamenti a tutti gli iscritti alla mailing list di Wget.

Copying

GNU Wget è licenziato sotto la GNU GPL, cosa che lo rende software libero.

Si noti che "libero" (free) si riferisce alla libertà e non al prezzo. Come alcuni avvocati del progetto GNU amano puntualizzare, si pensi al "libero discorrere" piuttosto che a "birra gratis". I termini legali e leganti esatti per la distribuzione sono citati qui sotto; in breve, si ha il diritto (la libertà) di lanciare e cambiare Wget, e di distribuirlo ad altre persone, e anche - volendo - richiedere denaro per altri servizi. La restrizione fondamentale è che è necessario garantire gli stessi diritti e imporre le stesse restrizioni ad altri.

Questo metodo di licenziare software è noto anche come open source dato che, tra le altre cose, fa sì che chiunque riceva il codice sorgente assieme al programma, e possa migliorarlo. Il progetto GNU preferisce il termine "free software" per motivi tracciati a http://www.gnu.org/philosophy/free-software-for-freedom.html.

I termini esatti di licenza sono definiti da questo paragrafo e dalla GNU General Public License cui si riferisce:

GNU Wget è free software; è possibile ridistribuirlo e/o modificarlo sotto i termini della GNU General Public License così come pubblicata dalla Free Software Foundation; è valida la versione 2 della licenza, o (a scelta) una qualsiasi versione più recente.

GNU Wget è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza inoltre la garanzia implicita di VENDIBILITà o di ADEGUATEZA A UN PARTICOLARE SCOPO. Si consulti la GNU General Public License per dettagli.

Una copia della GNU General Public License è inclusa come parte di questo manuale; se non è stata ricevuta, si scriva alla Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

In aggiunta a ciò, questo manuale è libero nello stesso senso:

È garantito il permesso di copiare, distribuire e/o modificare questo documento sotto i termini della GNU Free Documentation License, Versione 1.1 o superiori pubblicata dalla Free Software Foundation; le sezioni invarianti sono "GNU General Public License" e "GNU Free Documentation License", senza testi di frontespizio o di copertina posteriore. Una copia della licenza è inclusa nella sezione intitolata "GNU Free Documentation License".

I testi completi della GNU General Public License e della GNU Free Documentation License sono disponibili qui sotto.
NdT: ritengo corretto non tradurre i testi delle due licenze, in quanto nella traduzione, pur riuscendo a mantenere corretto il senso, potrei usare inavvertitamente termini legalmente non adeguati, che potrebbero invalidare o comunque rendere la traduzione non rispondente alla licenza originale.
Non ne sono sicuro, ma ritengo probabile l'esistenza di una versione tradotta correttamente in Italiano delle due licenze. Eventualmente, se necessario, il miglior consiglio che mi sento di dare al lettore è di rivolgersi direttamente al GNU o alla Free Software Foundation. Non essendo esperto di termini legali, ma solo uno studente di Ingegneria, posso occuparmi di tutta la tecnica di questo mondo, ma non datemi un testo di legge :-).

GNU General Public License

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
  2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
  3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
    1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
    2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
    3. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

    In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

  4. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
    1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
    The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

  5. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
  6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
  7. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
  8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

  9. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
  10. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

  11. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    NO WARRANTY

  12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

one line to give the program's name and an idea of what it does.
Copyright (C) 19yy  name of author

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'.  This is free software, and you are welcome
to redistribute it under certain conditions; type `show c'
for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright
interest in the program `Gnomovision'
(which makes passes at compilers) written
by James Hacker.

signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.

GNU Free Documentation License

Version 1.1, March 2000

Copyright (C) 2000  Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

  1. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

  2. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Esempi of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

  3. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.

  4. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

  5. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
    B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
    C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
    D. Preserve all the copyright notices of the Document.
    E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
    F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
    G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
    H. Include an unaltered copy of this License.
    I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
    J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
    K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
    L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
    M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
    N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

  6. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."

  7. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

  8. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

  9. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

  10. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

  11. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:


  Copyright (C)  year  your name.
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.1
  or any later version published by the Free Software Foundation;
  with the Invariant Sections being list their titles, with the
  Front-Cover Texts being list, and with the Back-Cover Texts being list.
  A copy of the license is included in the section entitled "GNU
  Free Documentation License".

If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being list"; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Indice analitico

.

  • .html extension
  • .listing file, rimozione dei file
  • .netrc
  • .wgetrc
  • a

  • accettare directory
  • accettare suffissi
  • accettare caratteri jolly
  • aggiungere al file di log
  • argomenti
  • autenticazione
  • b

  • back up dei file convertiti
  • base per collegamenti relativi
  • bind() a un indirizzo
  • bug, rapporti
  • bug
  • c

  • cache
  • client, indirizzo IP
  • clobbering, file
  • comando, linea di
  • Content-Length, ignorare
  • continuare recupero
  • contributi
  • conversione di collegamenti
  • cookie
  • cookie, caricamento
  • cookie, salvataggio
  • copying
  • cut directory
  • d

  • debug
  • dopo recupero, cancellazione
  • directory
  • directory, escludere
  • directory, includere
  • directory, limiti
  • directory, prefisso
  • dot (stile)
  • download di elementi multipli
  • e

  • esempi
  • escludere directory
  • eseguire comandi wgetrc
  • f

  • funzioni
  • fill, proxy cache
  • FTP, seguire collegamenti
  • ftp, seguire collegamenti
  • follow, collegamenti
  • forzare html
  • free software
  • ftp, time-stamping
  • g

  • GFDL
  • globbing
  • GPL
  • h

  • hangup
  • header, aggiungere
  • host, scorrere
  • http, password
  • http, referer
  • http, time-stamping
  • http, utente
  • i

  • ignorare lunghezza
  • includere directory
  • incompleti, download
  • incrementale, aggiornamento
  • input, file di
  • invocare
  • indirizzo IP, client
  • l

  • latest (ultima versione)
  • link, conversione
  • link (collegamenti)
  • lista (elenco)
  • lettura di cookie
  • locazione di wgetrc
  • log, file
  • m

  • mailing list
  • mirroring
  • n

  • no parent
  • no warranty
  • no-clobber
  • nohup
  • numero di tentativi
  • o

  • operativi, sistemi
  • opzioni, sintassi
  • output, filedi
  • overview (introduzione)
  • p

  • pagina, requisiti di
  • passive ftp
  • pausa
  • portabilità
  • progresso, indicatore di
  • proxy
  • proxy, proxy
  • proxy, autenticazione
  • proxy, riempimento
  • proxy, password
  • proxy, utente
  • q

  • quiet
  • quota
  • r

  • random (attesa)
  • ricorsione
  • recupero ricorsivo
  • ridirezione dell'uscita
  • referer, http
  • rigettare directory
  • rigettare suffissi
  • rigettare caratteri jolly
  • relativi, collegamenti
  • riportare bug
  • richieste, immagini (scaricamento di)
  • riprendere download
  • riprove
  • riprove, attesa tra
  • recupero
  • robot
  • robots.txt
  • s

  • semplice wgetrc
  • salvataggio cookie
  • sicurezza
  • server, manutenzione
  • server (risposta del), stampa
  • server (risposta del), salvataggio
  • segnali, gestione dei
  • scorrere host
  • spider
  • startup
  • startup, file
  • suffissi, accettare
  • suffissi, rigettare
  • simbolici (collegamenti), recupero di
  • sintassi delle opzioni
  • sintassi di wgetrc
  • t

  • tag-based recursive pruning
  • time-stamping
  • time-stamping usage
  • timeout
  • timestamping
  • tries
  • types of files
  • u

  • updating the archives
  • URL
  • URL syntax
  • usage, time-stamping
  • user-agent
  • v

  • various
  • verbose
  • w

  • wait
  • wait, random
  • waiting between retries
  • Wget as spider
  • wgetrc
  • wgetrc commands
  • wgetrc location
  • wgetrc syntax
  • wildcards, accept
  • wildcards, reject

  • This document was generated on 8 March 2002 using the texi2html translator version 1.51.