Como usar FTP pela linha de comando no Linux, Mac e Windows com ftp, lftp, sftp e curl: conectar, enviar e baixar arquivos e resolver os erros mais comuns.
Programas como o FileZilla resolvem a maior parte das transferências, mas há horas em que o terminal é melhor: num servidor sem interface gráfica, para mover uma pasta inteira de um servidor para outro ou dentro de um script de backup. Existem quatro ferramentas para isso, e a escolha depende de duas coisas: se você precisa de criptografia e se vai digitar os comandos ou automatizar.
| Ferramenta | Criptografia | Melhor uso |
|---|---|---|
ftp | Não (senha vai em texto puro) | Teste rápido de conexão |
lftp | Sim, FTP com TLS | Uso interativo e envio de pastas inteiras |
sftp | Sim, pelo SSH | Servidores e contas com acesso SSH |
curl | Sim, com --ssl-reqd | Scripts e Windows |
Antes de começar
- Servidor: normalmente
ftp.seudominio.com.brou o IP do servidor (nos exemplos,203.0.113.10). - Usuário e senha: na hospedagem cPanel, a conta principal usa só o usuário do cPanel; as contas criadas em Contas FTP usam o endereço completo, como
[email protected]. - Porta: 21 para FTP e FTP com TLS; 22 (ou a porta configurada) para SFTP.
Como usar o comando ftp
Instale se faltar: sudo dnf install ftp (AlmaLinux e Rocky) ou sudo apt install ftp (Ubuntu e Debian). O macOS não traz mais o ftp; use o lftp pelo Homebrew ou o sftp, que já vem instalado.
ftp -p ftp.seudominio.com.br
O -p liga o modo passivo, que funciona melhor atrás de roteadores e firewalls. O programa pede o usuário (Name) e a senha; quando aparecer 230 Login successful ou parecido, você está dentro e o prompt muda para ftp>.
| Comando | O que faz |
|---|---|
ls e cd pasta | Lista e entra em pastas do servidor |
lcd /caminho | Muda a pasta do seu computador |
get arquivo.zip | Baixa um arquivo |
put arquivo.zip | Envia um arquivo |
prompt e depois mput *.jpg | Envia vários arquivos sem confirmar um por um (mget baixa) |
binary | Garante transferência binária (para zip, imagens e bancos) |
mkdir, delete | Cria pasta e apaga arquivo no servidor |
bye | Encerra a conexão |
O ftp não envia pastas com subpastas e não criptografa nada. Para o dia a dia, prefira o lftp.
Como usar o lftp (FTP com TLS)
Instale com sudo dnf install lftp ou sudo apt install lftp. Para conectar, informe o usuário; a senha é pedida em seguida:
lftp -u [email protected] ftp.seudominio.com.br
O lftp usa TLS automaticamente quando o servidor oferece. Para exigir a criptografia e nunca cair para FTP aberto, conecte assim:
lftp -e "set ftp:ssl-force true" -u [email protected] ftp.seudominio.com.br
Os comandos básicos são os mesmos do ftp. O que faz a diferença é o mirror, que copia pastas inteiras:
# envia a pasta local "site" para public_html, só o que mudou
mirror -R --only-newer site public_html
# baixa public_html para a pasta local "copia-site"
mirror public_html copia-site
Como usar o sftp
O SFTP passa pela conexão SSH e já vem instalado no Linux, no macOS e no Windows 10 e 11. Só funciona se o usuário tiver acesso SSH; na hospedagem compartilhada, a sua conta precisa ter o SSH liberado.
sftp [email protected]
sftp -P 2222 [email protected]
Atenção ao -P maiúsculo para a porta (no ssh é minúsculo). Dentro do sftp> valem ls, cd, lcd, get e put, e para pastas inteiras use put -r pasta e get -r pasta.
Como usar o curl em scripts e no Windows
O curl já vem no Windows 10 e 11 e na maioria das distribuições Linux. No PowerShell, digite curl.exe, porque curl sozinho chama outro comando do Windows.
# enviar um arquivo para a pasta backups, com TLS obrigatório
curl --ssl-reqd -T backup.zip --user [email protected] ftp://ftp.seudominio.com.br/backups/
# baixar um arquivo
curl --ssl-reqd --user [email protected] -O ftp://ftp.seudominio.com.br/backups/backup.zip
Sem a senha no --user, o curl pergunta antes de conectar. Em scripts automáticos, guarde a senha num arquivo ~/.netrc com permissão 600 e use --netrc, em vez de deixá-la escrita no comando.
ftp.exe do Windows só trabalha em modo ativo e costuma travar no primeiro ls atrás de roteadores. Prefira o curl.exe, o sftp ou um programa como o FileZilla.Problemas comuns
530 Login authentication failed
Usuário ou senha errados. Nas contas FTP extras do cPanel, o usuário é o endereço completo ([email protected]). Depois de várias tentativas erradas, o firewall do servidor bloqueia o seu IP; veja como liberar o IP bloqueado.
O ls trava ou aparece 425 Can't open data connection
O canal de dados não consegue abrir. Use o modo passivo (ftp -p, ou o comando passive dentro do ftp); o lftp e o curl já usam passivo por padrão. Se continuar, a rede ou o firewall do servidor está barrando as portas passivas.
Certificate verification: certificate common name doesn't match requested host name
O certificado do FTP é do nome do servidor, não do seu domínio (no curl, o erro equivalente é no alternative certificate subject name matches target host name). Conecte usando o nome do servidor que aparece no certificado. Se você confia na conexão, pode desligar a checagem no lftp com set ssl:verify-certificate no, sabendo que perde a proteção contra servidores falsos.
ftp: command not found
O cliente não está instalado. Instale o ftp ou o lftp como mostrado acima; no macOS, use sftp ou instale o lftp pelo Homebrew.