domingo, 3 de julho de 2011

UTILIZANDO O FTP-FILE TRANSFER PROTOCOL

Por: Flavio Torres




Como usar o FTP
FTP é um comando utilizado para transferir arquivos de uma máquina para outra, sejam estas remotas ou não. A máquina na qual o comando é executado é chamada máquina local, e a máquina para onde ou de onde, se deseja transferir arquivos é chamada máquina remota. O nome da máquina remota pode ser especificado de duas maneiras:
  1. diretamente pela linha de comando digitando-se "ftp nome-máquina-remota".
    Exemplo:
    prompt> ftp spfec02.fec.unicamp.br ou
    prompt> ftp obelix.unicamp.br
  2. pela linha de comando do interpretador ftp, utilizando o comando open, tendo como argumento o nome da máquina remota. Para entrar no interpretador de comandos do ftp basta digitar "ftp" na linha de comando. O prompt do interpretador então irá aparecer (ftp>).
    Exemplo:
    prompt> ftp
    ftp> open spfec02.fec.unicamp.br

A partir do momento que a máquina remota foi especificada, o ftp tentará estabelecer um conexão com ela, verificando se tal máquina com tal nome existe e se está acessível. Caso seja bem sucedido, o ftp requisitará o login e a senha do usuário para máquina remota.
Exemplo:




prompt\> ftp spfec02.fec.unicamp.br
Connected to spfec02.fec.unicamp.br
220 spfec02 FTP server (UNIX(r) System V Release 4.0) ready.
Name (spfec02.fec.unicamp.br:): fulano
331 Password required for fulano.
Password:
230 User fulano logged in.
ftp>

Caso a ação de login seja bem sucedida, pode-se então iniciar a transferência de arquivos entre a máquina local e a máquina remota, utilizando-se os comandos put/mput (local -> remota) e os comandos get/mget (remota > local). Mas antes disso, é bom certificar-se sobre os diretórios de trabalho local e remoto (lcd/cd/pwd), sobre o tipo de representação na transferência dos arquivos (ascii/bin) e quais os nomes dos arquivos que serão transferidos (ls/dir).
Se a ação de login não for bem sucedida (como no caso de erros de digitação ou devido ao usuário especificado não ter acesso a máquina remota), pode-se então repetir o ação de login (comando user), (B máquina outra com conexão tentar ou>disconnect e open), ou ainda sair do ftp (quit/bye).

Comando lcd
O diretório de trabalho local (da máquina local) default será o mesmo de onde o comando ftp for executado. Para mudar o diretório local utilize o comando lcd com o nome do diretório para o qual se deseja mudar.
Exemplo: Supondo que o diretório default seja /home/fulano (Unix) ou c:\usr\fulano (DOS) e deseja-se mudar para o subdiretório docs.


ftp> lcd /home/fulano/docs (Unix)
ou
ftp> lcd c:\usr\fulano\docs (DOS)


Comando cd/pwd
O diretório de trabalho remoto inicialmente será o diretório home do usuário. Para mudá-lo basta usar o comando cd (change directory), passando o nome do novo diretório como argumento. O comando pwd mostra qual é o diretório de trabalho remoto corrente.


Comando ascii/binary
Os comandos ascii e binary (ou bin) modificam o tipo de representação dos dados que serão transferidos. O default é o tipo ASCII. Porém recomenda-se utilizar o tipo binário para assegurar o envio correto dos dados contidos nos arquivos. Para isso, basta digitar bin ou binary na linha de comando do interpretador. Para retornar ao tipo ASCII, basta digitar ascii.


Comando ls/dir
Os comandos ls e dir listam o conteúdo de um determinado diretório remoto. Se nenhum diretório remoto for especificado, então o atual será listado. A diferença entre esses dois comandos é que ls imprime um listagem parcial do conteúdo do diretório.


Comando get/mget
O comando get recupera um arquivo da máquina remota e armazena-o na máquina local. Este comando transfere somente um arquivo por vez. Já com mget, pode-se transferir vários arquivos de uma vez. Como especificar então, os vários arquivos que se deseja transferir pelo mget? Pode-se fazê-lo, por exemplo:

  • todos os arquivos, um após o outro, separados por espaço
  • arquivos com a mesma extensão (ex.: *.doc, *.txt)
  • arquivos com a mesma cadeia inicial no nome (ex.: cap*.txt, trab*.doc)
Aqui estão alguns exemplos:


ftp> get teste.txt
ftp> mget teste1.txt trabalho.doc Welcome.html
ftp> mget teste*.*
ftp> mget *.doc

Ao ser executado, o comando mget questiona cada um dos arquivos especificados se devem ser transferidos ou não. Isso ocorre pois o ftp está setado, por default, a operar em modo interativo. Para desabilitar o modo interativo, basta digitar "prompt". O comando prompt funciona como uma chave (switch), assim, quando acionado ou executado novamente ele irá habilitar o modo interativo.
Exemplo:



ftp> prompt
Interactive mode off.
ftp> prompt
Interactive mode on.
ftp>


Comando put/mput
Estes comandos fazem o inverso dos comandos get/mget, ou seja, armazenam arquivos locais na máquina remota. Assim como get, put transmite somente um arquivo por vez, e mput pode transmitir vários arquivos por vez (como mget). A especificaçao dos arquivos é feita de forma semelhante a get/mget.


Comando disconnect/open
O comando disconnect faz com que a conexão com a máquina remota seja quebrada, caso haja uma conexão. O comando open abre uma conexão com uma máquina remota, desde que não haja nenhuma conexão com outra máquina remota. Caso haja conexão, deve-se interrompê-la para usar o comando open.


Comando quit/bye
O comando disconnect, apesar de interromper a conexão com uma máquina remota, não faz o ftp sair de seu interpretador de comandos. Para sair do ftp digite bye ou quit.


Outros Comandos
Há outros comandos que o intepretador ftp aceita. Com eles pode-se, por exemplo, criar diretórios, renomear arquivos e apagar arquivos. Para ver quais são os comandos que o interpretador aceita, basta digitar ?. Outro comando útil é help, que descreve brevemente o comando passado como argumento.
Exemplo:



ftp> ?
Commands may be abbreviated.  Commands are:

!  cr  macdef  proxy  send
$  delete  mdelete  sendport status
account  debug  mdir  put  struct
append  dir  mget  pwd  sunique
ascii  disconnect mkdir  quit  tenex
bell  form  mls  quote  trace
binary  get  mode  recv  type
bye  glob  mput  remotehelp user
case  hash  nmap  rename  verbose
cd  help  ntrans  reset  ?
cdup  lcd  open  rmdir
close  ls  prompt  runique
ftp> help put
put        send one file
ftp> 

Exemplos de utilização do ftp
get e mget
c:\usr\fulano\> ftp spfec02.fec.unicamp.br Connected to spfec02.fec.unicamp.br. 220 spfec02 FTP server (UNIX(r) System V Release 4.0) ready. Name (spfec02.fec.unicamp.br:<none>): fulano 331 Password required for fulano. Password: 230 User fulano logged in. ftp> ls 200 PORT command successful. 150 ASCII data connection for /bin/ls (143.106.4.122,35420) (0 bytes). teste1.txt teste2.ex2 teste3.ex3 teste4.ex4 trabalho.doc 226 ASCII Transfer complete. 62 bytes received in 0.079 seconds (0.77 Kbytes/s) ftp> pwd 257 "/home/fulano" is current directory. ftp> lcd Local directory now c:\usr\fulano ftp> bin 200 Type set to I. ftp> get trabalho.doc 200 PORT command successful. 150 Binary data connection for trabalho.doc (143.106.4.122,35421) (7 bytes). 226 Binary Transfer complete. local: trabalho.doc remote: trabalho.doc 7 bytes received in 0.024 seconds (0.29 Kbytes/s) ftp> mget teste*.* mget teste1.txt? y 200 PORT command successful. 150 Binary data connection for teste1.txt (143.106.4.122,35423) (7 bytes). 226 Binary Transfer complete. local: teste1.txt remote: teste1.txt 7 bytes received in 0.015 seconds (0.45 Kbytes/s) mget teste2.ex2? y 200 PORT command successful. 150 Binary data connection for teste2.ex2 (143.106.4.122,35424) (7 bytes). 226 Binary Transfer complete. local: teste2.ex2 remote: teste2.ex2 7 bytes received in 0.026 seconds (0.26 Kbytes/s) mget teste3.ex3? y 200 PORT command successful. 150 Binary data connection for teste3.ex3 (143.106.4.122,35425) (7 bytes). 226 Binary Transfer complete. local: teste3.ex3 remote: teste3.ex3 7 bytes received in 0.015 seconds (0.45 Kbytes/s) mget teste4.ex4? n ftp> disconnect 221 Goodbye. ftp> open obelix.unicamp.br Connected to obelix.unicamp.br. 220 obelix FTP server (UNIX(r) System V Release 4.0) ready. Name (obelix.unicamp.br:<none>): fulano 530 User fulano access denied. Login failed. ftp> disconnect 221 Goodbye. ftp> open spfec02 Connected to spfec02.fec.unicamp.br. 220 spfec02 FTP server (UNIX(r) System V Release 4.0) ready. Name (spfec02:fulano): 331 Password required for fulano Password: 530 Login incorrect. Login failed. ftp> user fulano 331 Password required for fulano. Password: 230 User fulano logged in. ftp> ls 200 PORT command successful. 150 ASCII data connection for /bin/ls (143.106.4.122,35420) (0 bytes). teste1.txt teste2.ex2 teste3.ex3 teste4.ex4 trabalho.doc 226 ASCII Transfer complete. 62 bytes received in 0.079 seconds (0.77 Kbytes/s) ftp> quit 221 Goodbye. c:\usr\fulano\> dir O volume na unidade C não tem nome. O número de srie do volume 04D9-B769 Pasta de C:\usr\fulano 12/10/97 17:21 <DIR> . 12/10/97 17:21 <DIR> .. 16/10/97 19:06 2.564 teste1.txt 16/10/97 19:06 2.947 teste2.ex2 16/10/97 19:06 5.679 teste3.ex3 16/10/97 19:06 26.912 trabalho.doc 5 arquivo(s) 38.102 bytes 111.032.444 bytes disponíveis c:\usr\fulano\>
put e mput

c:\usr\beltrano\> dir

 O volume na unidade C não tem nome.
 O número de srie do volume  04D9-B769

 Pasta de C:\usr\beltrano

12/10/97  17:21         <DIR>          .
12/10/97  17:21         <DIR>          ..
16/10/97  19:06                  2.564 Image34.gif
17/10/97  13:29                  2.947 Image35.gif
12/10/97  04:09                  5.679 welcome.htm
25/10/97  10:09                 26.912 ec303.doc
06/11/97  10:20                 25.088 ec193.doc

           5 arquivo(s)         63.190 bytes
                           270.840.320 bytes disponíveis

c:\usr\beltrano\> ftp
ftp> open spfec02
Connected to spfec02.fec.unicamp.br.
220 spfec02 FTP server (UNIX(r) System V Release 4.0) ready.
Name (spfec02:<none>): beltrano
331 Password required for beltrano
Password:
230 User beltrano logged in.
ftp> dir
200 PORT command successful.
150 ASCII data connection for /bin/ls (143.106.4.122,35447) (0 bytes).
total 802
-rw-r--r--   1 beltrano  grad        1942 Nov  6 10:06 Welcome.html
-rw-r--r--   1 beltrano  grad        7060 Oct 14 15:17 autodesk.gif
-rw-r--r--   1 beltrano  grad       35351 Oct 14 15:17 engine.gif
drwxr-xr-x   2 beltrano  grad         512 Oct 23 21:42 docs
-rw-r--r--   1 beltrano  grad          65 Oct 17 16:45 minhalinha.gif
-rw-r--r--   1 beltrano  grad       57361 Oct 14 15:17 tb_charg.gif
-rw-r--r--   1 beltrano  grad        1406 Oct  2 10:24 unicamp.gif
226 ASCII Transfer complete.
1344 bytes received in 0.27 seconds (4.8 Kbytes/s)
ftp> pwd
Local directory now /home/beltrano
ftp> cd docs
Local directory now /home/beltrano/docs
ftp> ls
200 PORT command successful.
150 ASCII data connection for /bin/ls (143.106.4.122,35449) (0 bytes).
acomod1.doc
acomod2.doc
acomod3.doc
226 ASCII Transfer complete.
126 bytes received in 0.056 seconds (2.2 Kbytes/s)
ftp> bin
200 Type set to I.
ftp> prompt
Interactive mode off.
ftp> put welcome.htm 
200 PORT command successful.
150 Binary data connection for Welcome.htm (143.106.4.122,35433).
226 Transfer complete.
local: welcome.htm remote: welcome.htm
7 bytes sent in 0.00047 seconds (15 Kbytes/s)
ftp> mput ec*.doc
200 PORT command successful.
150 Binary data connection for ec193.doc (143.106.4.122,35434).
226 Transfer complete.
local: ec193.doc remote: ec193.doc
7 bytes sent in 0.00038 seconds (18 Kbytes/s)
200 PORT command successful.
150 Binary data connection for ec303.doc (143.106.4.122,35435).
226 Transfer complete.
local: ec303.doc remote: ec303.doc
7 bytes sent in 0.00034 seconds (20 Kbytes/s)
ftp> ls
200 PORT command successful.
150 ASCII data connection for /bin/ls (143.106.4.122,35436) (0 bytes).
acomod1.doc
acomod2.doc
acomod3.doc
ec193.doc
ec303.doc
welcome.htm
226 ASCII Transfer complete.
35 bytes received in 0.013 seconds (2.6 Kbytes/s)
ftp> bye
221 Goodbye.

c:\usr\beltrano\> 


Maiores informações podem ser encontradas pelo comando man do Unix (man ftp).

RESUMO:

Em linhas gerais, para quem deseja um resumo dos comandos e funções é so imprimir abaixo:

COMANDO
ARGUMENTO
FUNÇÃO
bin Altera o modo de transferência para binário (usado para transferência de elementos gráficos, arquivos ZIP etc.)
chdir [ nome do diretório ] Altera nosso diretório
cd [ nome do diretório remoto ] Muda o diretório de trabalho na máquina remota.
cdup [ nome do diretório remoto ] Muda o diretório de trabalho para o diretório "pai" (superior) do diretório atual.
dir Lista o conteúdo do diretório da máquina remota, colocando o resultado na máquina local.
Se nenhum diretório remoto for especificado, o diretório de trabalho atual na máquina remota será utilizado.
Se nenhum arquivo na máquina local for especificado para receber a lista do diretório remoto, o resultado é enviado para o terminal.
!dir [ dir_local ] [ arq_local ] Em alguns sistemas ftp, este comando lista o conteúdo de um diretório da máquina local.
disconnect O comando disconnect faz com que a conexão com a máquina remota seja quebrada, caso haja uma conexão.
get [ nome_arq ] Transfere arquivos do servidor remoto de FTP para sua unidade de disco local.
Se um nome de arquivo_local não for especificado, é dado o mesmo nome do arquivo na máquina remota.
lcd [ diretório ] Muda o diretório de trabalho na máquina local.
Se nenhum diretório for especificado, o diretório "home" do usuário é utilizado.
ls [ dir_remoto ] [ arq_local ] Dá uma listagem do conteúdo de um diretório da máquina remota. Se não for especificado um diretório remoto, é mostrada a listagem do diretório de trabalho usado.
Se nenhum arquivo local for especificado, a listagem é mostrada na tela.
mget [ nome_arq ] Transfere vários arquivos (usando curingas) do servidor remoto de FTP para sua unidade de disco local
mkdir [ nome do diretorio] Cria um diretório
mput [ nome_arq ] Transfere vários arquivos (usando curingas) da sua unidade de disco local para o host remoto de FTP
open O comando open abre uma conexão com uma máquina remota, desde que não haja nenhuma conexão com outra máquina remota. Caso haja conexão, deve-se interrompê-la para usar o comando open.
put [ nome_arq ] Transfere arquivos de sua unidade de disco local para o servidor remoto de FTP
prompt Ativa e desativa avisos de confirmação durante o uso dos comandos mput e mget
pwd Exibe o conteúdo atual do servidor do Yahoo! GeoCities
quit/bye O comando disconnect, apesar de interromper a conexão com uma máquina remota, não faz o ftp sair de seu interpretador de comandos. Para sair do ftp digite bye ou quit.
rmdir [ nome do diretório ] Remove um diretório
? Lista vários comandos
? [comando] Lista uma ajuda simples para esse <comando>


OUTROS ARTIGOS INTERESSANTES EM http://www.flaviotorres.com.br/fnt/princ.php?pagina=artigos

Nenhum comentário:

Postar um comentário