<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21"> <TITLE>FTP mini-HOWTO: Guida all'uso di FTP per il principiante</TITLE> <LINK HREF="FTP-4.html" REL=next> <LINK HREF="FTP-2.html" REL=previous> <LINK HREF="FTP.html#toc3" REL=contents> </HEAD> <BODY> <A HREF="FTP-4.html">Avanti</A> <A HREF="FTP-2.html">Indietro</A> <A HREF="FTP.html#toc3">Indice</A> <HR> <H2><A NAME="s3">3.</A> <A HREF="FTP.html#toc3">Guida all'uso di FTP per il principiante</A></H2> <P><B>Una guida rapida all'uso di ftp.</B></P> <P>Il programma ftp standard è il client originale ftp. Esso è compreso nella configurazione standard della maggior parte delle distribuzioni Linux. Apparve per la prima volta nel BSD4.2, sviluppato dall'Università della California, a Berkeley.</P> <H2><A NAME="ss3.1">3.1</A> <A HREF="FTP.html#toc3.1">Eseguire il programma <CODE>ftp</CODE></A> </H2> <P>Usare ftp è facile. Poniamo che ci si voglia connettere al sito ftp anonimo metalab.unc.edu per scaricare l'ultima versione dei sorgenti del kernel di Linux.</P> <P>Si digiti, al prompt dei comandi:</P> <P> <BLOCKQUOTE><CODE> <PRE> $ ftp metalab.unc.edu </PRE> </CODE></BLOCKQUOTE> </P> <P>Il programma ftp tenterà di connettersi a metalab.unc.edu. Un altro modo per fare ciò è quello di eseguire <CODE>ftp</CODE> dal prompt dei comandi senza parametri, usando poi il comando <CODE>open</CODE>, con il nome del sito come argomento:</P> <P> <BLOCKQUOTE><CODE> <PRE> $ ftp ftp> open metalab.unc.edu </PRE> </CODE></BLOCKQUOTE> </P> <H2><A NAME="ss3.2">3.2</A> <A HREF="FTP.html#toc3.2">Autenticarsi presso un server FTP</A> </H2> <P>Quando ci si connette ad un sito FTP, viene avviata una sessione di autenticazione (premendo il tasto invio, ftp cercherà di autenticarvi con lo stesso utente che state usando sulla macchina locale: in questo caso, <CODE>foo</CODE>). Ci autentichiamo come <CODE>anonymous</CODE> o <CODE>ftp</CODE>, per accedere all'archivio pubblico.</P> <P> <BLOCKQUOTE><CODE> <PRE> 220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12 EST 1999) ready. Name (metalab.unc.edu:foo): </PRE> </CODE></BLOCKQUOTE> </P> <P>Ora, si digiti un indirizzo e-mail completo come password (è quello che la maggior parte dei siti FTP pubblici richiede).</P> <P> <BLOCKQUOTE><CODE> <PRE> 331 Guest login ok, send your complete e-mail address as password. Password: </PRE> </CODE></BLOCKQUOTE> </P> <P>Completata con successo l'autenticazione (login), viene fornita l'informazione seguente:</P> <P> <BLOCKQUOTE><CODE> <PRE> Remote system type is UNIX. Using binary mode to transfer files. ftp> </PRE> </CODE></BLOCKQUOTE> </P> <H2><A NAME="ss3.3">3.3</A> <A HREF="FTP.html#toc3.3">Tipi di trasferimento file</A> </H2> <P>Dopo aver ottenuto accesso ad un sito ftp, <CODE>ftp</CODE> mostrerà il tipo di trasferimento file. Nel nostro esempio, esso è binario. La modalità binaria trasferisce i file, bit per bit, così come essi si trovano sul server FTP. La modalità ascii, invece, trasferisce direttamente il testo. Per commutare tra le due modalità, basta digitare <CODE>ascii</CODE> o <CODE>binary</CODE>.</P> <P>Si vogliono trasferire i sorgenti del kernel, così si mantiene la modalità di trasferimento file binaria. Si userà tale modalità anche per qualsiasi file non testuale, come immagini, archivi zip/gzip, programmi eseguibili, ecc. Nel dubbio, si usi la modalità binaria.</P> <H2><A NAME="ss3.4">3.4</A> <A HREF="FTP.html#toc3.4">Navigare ed elencare le directory</A> </H2> <P>Per vedere un elenco dei file, si digiti <CODE>ls</CODE>. Il comando <CODE>ls</CODE> inviato al server ftp è eseguito sul server remoto, così le opzioni da riga di comando che si potranno usare con esso varieranno a seconda del server. Comunque, le opzioni più comuni sono di solito disponibili. Controllare la pagina di manuale di <CODE>ls</CODE> per i dettagli.</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 33590 -r--r--r-- 1 root other 34348506 Dec 03 03:53 IAFA-LISTINGS lrwxrwxrwx 1 root other 7 Jul 15 1997 README -> WELCOME -rw-r--r-- 1 root other 890 Nov 15 13:11 WELCOME dr-xr-xr-x 2 root other 512 Jul 15 1997 bin dr-xr-xr-x 2 root other 512 Jul 15 1997 dev dr-xr-xr-x 2 root other 512 Jul 18 1997 etc drwxrwxrwx 11 ftp 20 4608 Nov 28 16:00 incoming lrwxrwxrwx 1 root other 13 Jun 04 1998 ls-lR -> IAFA-LISTINGS dr-xr-xr-x 17 root root 512 Jun 08 11:43 pub dr-xr-xr-x 3 root other 512 Jul 15 1997 unc dr-xr-xr-x 5 root other 512 Jul 15 1997 usr 226 Transfer complete. </PRE> </CODE></BLOCKQUOTE> </P> <P>Se il comando <CODE>ls</CODE> elenca così tanti file che l'elenco sparisce nella parte superiore dello schermo, è possibile usare la combinazione di tasti Shift-PaginaSu per scorrere verso l'alto. Ciò funziona sia nella console Linux che in xterm che in rxvt.</P> <P>Negli archivi FTP pubblici, le risorse scaricabili sono di solito contenute nella directory <CODE>/pub</CODE>. Nel nostro esempio, si sa che i sorgenti del kernel si trovano nella directory <CODE>/pub/Linux/kernel</CODE>, così, per accedere a tale directory, si digiti:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> cd pub/Linux/kernel 250-README for kernel 250- 250-What you'll find here: kernel sources and patches 250- 250- 250 CWD command successful. </PRE> </CODE></BLOCKQUOTE> </P> <P>I messaggi mostrati, che iniziano con "250", sono informazioni spedite dal server. In questo esempio, il server ftp è stato configurato per spedire automaticamente il file README non appena si accede alla directory.</P> <H2><A NAME="ss3.5">3.5</A> <A HREF="FTP.html#toc3.5">Download e upload dei file</A> </H2> <P>Adesso, dopo aver inviato un altro <CODE>ls</CODE>, capiamo di dover accedere con <CODE>cd</CODE> alla directory v2.2. Grazie ad un ulteriore <CODE>ls</CODE>, si trova il file che si desiderava scaricare. Si tratta di <CODE>linux-2.2.13.tar.gz</CODE>. Perciò, si digiti:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> get linux-2.2.13.tar.gz local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes). </PRE> </CODE></BLOCKQUOTE> </P> <P>Il programma ftp ha iniziato a salvare il file remoto <CODE>linux-2.2.13.tar.gz</CODE> nel file locale <CODE>linux-2.2.13.tar.gz</CODE>.</P> <P>Se si fosse voluto salvarlo, piuttosto, nel file locale <CODE>foo.tar.gz</CODE>, si sarebbe dovuto specificare nel modo seguente:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> get linux-2.2.13.tar.gz foo.tar.gz local: foo.tar.gz remote: linux-2.2.13.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes). </PRE> </CODE></BLOCKQUOTE> </P> <P>Se si desidera scaricare più di un file alla volta, si può usare il comando <CODE>mget</CODE> (multiple get). Si possono specificare i file che <CODE>mget</CODE> deve scaricare come una lista di nomi di file separati da spazi, oppure tramite l'uso dei caratteri jolly. Per esempio:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> mget linux* </PRE> </CODE></BLOCKQUOTE> </P> <P>Scaricherà tutti i file che iniziano con la stringa "linux". Normalmente, <CODE>mget</CODE> avverte, per ogni file, che sta per scaricarlo. Si può variare questo comportamento usando il comando <CODE>prompt</CODE>.</P> <P>Ora, supponiamo di aver scritto una parte di un programma e supponiamo di volerla spedire alla MetaLab affinché la includa nell'archivio di software per Linux. Per prima cosa, ci si sposterà verso la directory <CODE>/incoming</CODE> (la maggior parte dei server FTP pubblici prevede una directory, chiamata solitamente "incoming" o "uploads", in cui si può eseguire l'upload dei file), poi si userà il comando <CODE>put</CODE>:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> cd /incoming ftp> put foo.tar.gz local: foo.tar.gz remote: foo.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for foo.tar.gz. 226 Transfer complete. 10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec) </PRE> </CODE></BLOCKQUOTE> </P> <P>Il comando <CODE>put</CODE> funziona allo stesso modo di <CODE>get</CODE>, così è possibile usare <CODE>mput</CODE> per l'upload di più file. Si può anche effettuare l'upload di un file locale cambiandogli il nome sul server: basta specificare il nome del file remoto e/o il nome del percorso come argomenti.</P> <P>Cosa succede se il file <CODE>foo.tar.gz</CODE> non si trova nella directory locale corrente al momento del tentativo di upload? Si può usare il comando <CODE>lcd</CODE> (local change directory) per cambiare posizione tra le directory locali:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> lcd /home/foo/ Local directory now /home/foo </PRE> </CODE></BLOCKQUOTE> </P> <H2><A NAME="ss3.6">3.6</A> <A HREF="FTP.html#toc3.6">Eseguire comandi di shell</A> </H2> <P>Il client ftp supporta l'uso del punto esclamativo (!) per eseguire comandi locali. Per esempio, per ottenere un elenco dei file presenti nella propria directory locale corrente, si digiti:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> !ls </PRE> </CODE></BLOCKQUOTE> </P> <P>Ciò che accade è che ftp chiama la shell (specificata nella variabile d'ambiente <CODE>$SHELL</CODE>), ed è questa che esegue <CODE>ls</CODE>. In questo modo, si può eseguire qualsiasi riga di comando che funziona con la propria shell, semplicemente facendola precedere da "!" (la shell predefinita nella maggior parte delle distribuzioni Linux è la bash: Bourne Again SHell). Si noti che <CODE>!cd</CODE> non funziona nel modo atteso: da qui l'esigenza del comando <CODE>lcd</CODE>.</P> <H2><A NAME="ss3.7">3.7</A> <A HREF="FTP.html#toc3.7">hash e tick</A> </H2> <P>Non sarebbe carino poter monitorare il progresso dello scaricamento di un file con ftp? Il comando <CODE>hash</CODE> mostra a video dei caratteri cancelletto (ovvero '#') durante lo scaricamento di un file:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> hash Hash mark printing on (1024 bytes/hash mark). </PRE> </CODE></BLOCKQUOTE> </P> <P>Come si intuisce, ftp mostrerà un carattere cancelletto per ogni 1024 byte di dati scaricati.</P> <P>Esiste anche la possibilità di usare <CODE>tick</CODE>:</P> <P> <BLOCKQUOTE><CODE> <PRE> ftp> tick Tick counter printing on (10240 bytes/tick increment). </PRE> </CODE></BLOCKQUOTE> </P> <P>Quando si scaricherà un file, questo comando stamperà un messaggio simile al seguente:</P> <P> <BLOCKQUOTE><CODE> <PRE> Bytes transferred: 11680 </PRE> </CODE></BLOCKQUOTE> </P> <H2><A NAME="ss3.8">3.8</A> <A HREF="FTP.html#toc3.8">Altri comandi ftp</A> </H2> <P>Esistono molti altri comandi ftp. Se si possiede l'autorizzazione (e, connettendosi al proprio account di shell privato, si dovrebbe possederla) è possibile anche creare directory sul server remoto usando il comando <CODE>mkdir</CODE>. La rimozione di un file o di una directory sul server remoto è possibile usando i comandi <CODE>delete</CODE> e <CODE>rmdir</CODE> rispettivamente. Si possono anche cambiare i permessi associati a file e directory remote usando il comando <CODE>chmod</CODE>.</P> <P>Per informazioni più avanzate sull'uso di ftp si veda l'help in linea del programma ftp (accessibile digitando <CODE>help</CODE> senza argomenti per una lista dei comandi disponibili, o seguito da <CODE><nome_comando></CODE> per aiuto su un comando specifico. Un'altra fonte è la pagina di manuale Unix di ftp, che si ottiene digitando <CODE>man ftp</CODE> al prompt dei comandi.</P> <HR> <A HREF="FTP-4.html">Avanti</A> <A HREF="FTP-2.html">Indietro</A> <A HREF="FTP.html#toc3">Indice</A> </BODY> </HTML>