Transferindo arquivos entre servidores Linux via linha de comando com FTP

O Linux é um sistema operacional bastante versátil. Como sabemos, além disso, ele é amplamente utilizado em servidores web, e geralmente, quem administra tais ambientes, precisa realizar inúmeras tarefas através do SSH (Secure Shell).

A linha de comando, em sistemas Unix, permite que um número enorme de recursos e funções, bem como variações, sejam utilizados, para as mais diversas finalidades.

Transferência de arquivos, por exemplo. Podemos realizar tal procedimento de diversas formas, mas vamos aqui falar a respeito de uma em especial.

Antes, porém, confira alguns artigos relacionados, já publicados aqui mesmo no Código Fonte:

Transferindo arquivos

É extremamente simples transferir arquivos entre um servidor e outro utilizando, por exemplo, o protocolo FTP (“File Transfer Protocol”, ou “Protocolo de Transferência de Arquivos”) através da linha de comando. É possível tanto enviar quanto receber arquivos e pastas, desta maneira, e os procedimentos são bem rápidos.

Download - UploadApós realizar login em um servidor via SSH, utilize o comando “ftp” para se conectar ao servidor remoto, usando uma das alternativas abaixo:

ftp ipdoservidor
ftp endereçodohost

Por exemplo: “ftp 127.0.0.1<ENTER>” ou “ftp host.dominio.tld<ENTER>”.

Logo em seguida, você deverá fornecer os dados de login para a conexão (“Name/User” = Usuário / “Password” = Senha). Confira abaixo:

root@host [/]# ftp ipdoservidorremoto
Connected to ipdoservidorremoto (ipdoservidorremoto).
220———- Welcome to Pure-FTPd [privsep] [TLS] ———-
220-You are user number 3 of 50 allowed.
220-Local time is now 13:59. Server port: 21.
220-This is a private system – No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (ipdoservidorremoto:root): usuario
331 User usuario OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

O usuário e a senha são solicitados de maneira sequencial, e não se preocupe se ao digitar a senha nada aparecer na linha de comando. Continue normalmente e tecle <ENTER> após a inserção da mesma (alguns clientes, como o Bitvise Tunnelier, por exemplo – veja acima – ainda suportam CTRL+C e CTRL+V).

Para a transferência de arquivos, utilizaremos os comandos “get” (para o download / recepção) e “put” (para o envio / upload). Vale lembrar que, após a conexão ao servidor remoto, também podemos utilizar os comandos “cd” (para acessar diretórios) ou “ls”, para listar o conteúdo dos diretórios. O “pwd” também pode ser bastante útil caso você se “perca”.

Confira abaixo:

ftp> ls
227 Entering Passive Mode (ipdoservidorremoto)
150 Accepted data connection
drwxr-x—    3 usuario      99               4096 Sep 18 14:06 .
drwx–x–x    9 usuario      usuario      4096 Sep 18 13:32 ..
drwxr-xr-x    2 usuario      usuario      4096 Sep 18 13:29 cgi-bi
226-Options: -a -l
226 3 matches total
ftp>

Enviando um arquivo via FTP, do servidor local para um remoto

Agora, vamos enviar um arquivo para o servidor remoto. A sintaxe é a seguinte:

put arquivolocal arquivoremoto

Confira:

ftp> put /usertest/Codigofonte.php /public_html/Codigofonte.php
local: /usertest/Codigofonte.php remote: /public_html/Codigofonte.php
227 Entering Passive Mode (ipdoservidorremoto)
150 Accepted data connection
226-File successfully transferred
226 0.012 seconds (measured here), 1.52 Kbytes per second
19 bytes sent in 0.0113 secs (1.69 Kbytes/sec)
ftp>

Ou seja, no exemplo acima, enviamos o arquivo “Codigofonte.php” do diretório “/usertest/”, no servidor local, para o diretório “/public_html/” no servidor remoto.

Baixando um arquivo via FTP, do servidor remoto para o local

Neste caso, a sintaxe é a seguinte:

get arquivoremoto arquivolocal

Confira:

ftp> get /public_html/Codigofonte.php /usertest/Codigofonte.php
local: /usertest/Codigofonte.php remote: /public_html/Codigofonte.php
227 Entering Passive Mode (ipdoservidorremoto)
150 Accepted data connection
226-File successfully transferred
226 0.000 seconds (measured here), 475.68 Kbytes per second
19 bytes received in 2e-05 secs (950.00 Kbytes/sec)
ftp>

No exemplo acima, baixamos o arquivo “Codigofonte.php” do diretório “/public_html/”, no servidor remoto, para o diretório “/usertest/” do servidor local.

Finalizando

E para sair do FTP na linha de comando, basta digitar “quit” e teclar <ENTER>.

Utilizando os comandos “put” e “get”, você pode facilmente realizar transferências de arquivos. Transferências de backups compactados, por exemplo (arquivos .tar.gz, digamos), entre diversos servidores web.

Não se esqueça de observar as sintaxes de cada comando e também os nomes dos arquivos (respeitando maiúsculas e minúsculas ) e seus respectivos locais/pastas/caminhos/paths, conforme suas necessidades, seu ambiente e a utilização.

E fique de olho no Código Fonte para mais dicas como esta.

Sobre Marcos A.T. Silva

Marcos A.T. Silva é empresário na área de TI. É apaixonado por games desde que ganhou seu primeiro Atari 2600. Outras de suas paixões são a leitura e a música. Toca piano desde cedo e também gosta do bom e velho rock ‘n roll. Pode ser encontrado também no XboxPlus.

Queremos saber sua opinião