Linux - Transferência de arquivos utilizando sftp


Existe dois protocolos de transferência comumente usados no ssh, RCP (implementado pelo scp) e o SFTP.
Hoje vamos falar um pouco de um programa muito útil do linux, o sftp. Para quem já utilizou o protocolo ftp (de transferência de dados) está ai uma opção muito interessante.

Vamos utilizar como plataforma o console do linux e a transferência de exemplo será entre duas máquinas com sistema operacional Linux.

Primeiramente temos que saber em qual máquina a conexão será estabelecida. Isto se traduz em saber o endereço, login e senha da máquina.

Tendo estas infos em mãos, podemos digitar na shell

$ sftp login@endereco

ou como um melhor exemplo:

$ sftp usuario1@200.200.00.0001

o endereço, neste caso, é o ip da máquina que se quer conectar

Após inserir a senha solicitada você estará conectado. A partir deste momento temos de ter em mente que estamos em um "ambiente duplo", ou seja, o sftp nos deixa com a possibilidade de operar comandos tanto no computador local (onde você está) quanto no computador remoto. Assim podemos listar arquivos, mudar de diretório e etc., tanto no computador remoto quanto no local. O que diferencia onde cada comando será executado é a inserção da letra l na frente de seu comando, onde o l significa "Local". O comando "cd" mudaria de diretório no computador remoto e "lcd" alteraria o diretório na máquina Local. É esta a ideia geral do sftp.

Abaixo seguem alguns dos comandos principais do SFTP:

ls - lista o diretório atual no computador remoto
lls - lista o diretório atual no computador local

cd - muda o diretório atual no computador remoto
lcd - muda o diretório atual no computador local

put - envia arquivos para o computador remoto
get - recebe arquivos do computador remoto

A idéia do SFTP é que você se mova para o diretório de origem e destino usando cd e lcd e que fazendo um simples put ou get o arquivo seja transferido para o local correto, sem ter de digitar o caminho completo para cada arquivo transferido.

Exemplo:
sftp> cd /home/arquivos_remoto/
sftp> lcd /home/arquivos_local/

posiciona o usuário nas pastas corretas

sftp> ls
arquivo1
arquivo2

lista os arquivos do computador remoto

sftp> lls
arquivo3
arquivo4

lista os arquivos do computador local

sftp> put arquivo2
sftp> ls
arquivo2
arquivo3
arquivo4

transfere os arquivos da pasta /home/arquivos_local/ para /home/arquivos_remoto/ e lista o diretório remoto.

sftp> get arquivo4
sftp> lls
arquivo1
arquivo2
arquivo4

transfere os arquivos da pasta /home/arquivos_remoto/ para /home/arquivos_local/ e lista o diretório local.

Um truque interessante é a transferência de vários arquivos em sequência.

sftp> get arquivo*.txt

Baixa todos os arquivos do tipo arquivo1.txt arquivo2.txt arquivocomoutronome.txt e etc. * (asterisco) é um coringa.

Para encerrar o sftp basta digitar:

sftp> bye

ou

sftp> exit

Espero que as dicas sejam úteis.

Abraço a todos

Comentários

Postagens mais visitadas deste blog

MySQL - Completando quantidades fixas de caracteres com as funções LPAD() e RPAD()

MySQL - Clonando tabelas na linha de comando

PHP - Gerando arquivo em UTF-8 com fwrite() e utf8_encode()