Guia Prático de Transferência de Arquivos com SFTP via SSH

O SFTP (SSH File Transfer Protocol) é uma ferramenta interativa projetada para gerenciamento e transferência segura de arquivos, operando sobre o prtoocolo SSH. Diferente do FTP tradicional, todo o tráfego de dados, incluindo autenticação, é criptografado, garantidno a integridade e confidencialidade das informações.

Comparativo: SFTP vs FTP

Característica SFTP FTP
Base de Protocolo Integrado ao SSH Protocolo autônomo
Segurança Dados criptografados (senhas e arquivos protegidos) Comunicação em texto puro (vulnerável a interceptação)
Portas de Rede Porta 22 (padrão SSH) Portas 20 e 21 (canal de controle e dados)
Autenticação Mecanismos do SSH (chaves criptográficas ou senhas) Usuário e senha em texto puro
Firewall Simplificado (apenas uma porta necessária) Complexo (exige configurações de modo ativo/passivo)

Quando usar SFTP vs SCP

Cenário SFTP SCP
Navegação Permite explorar diretórios antes da transferência Exige conhecimento prévio do caminho exato
Operações Gestão de arquivos (renomear, apagar, mudar permissões) Apenas cópia simples de arquivos
Interação Sessão contínua e interativa Comando único e isolado

Estabelecendo Conexão

Para iniciar uma sessão interativa, o comando básico exige o usuário e o endereço do servidor remoto.

sftp admin@meuservidor.com

Caso o serviço SSH escute em uma porta alternativa, utilize o parâmetro -P (maiúsculo).

sftp -P 2200 admin@meuservidor.com

Para autenticação baseada em chaves, especifique o arquivo de chave privada com a flag -i.

sftp -i ~/.ssh/id_rsa_custom admin@meuservidor.com

Manipulação de Arquivos e Diretórios

Durante a sessão no prompt sftp>, você pode operar tanto no ambiente local quanto no remoto.

Comandos Locais

Para interagir com a máquina de origem, prefixe os comandos com a letra 'l' (local) ou utilize '!' para executar instruções arbitrárias do shell.

sftp> lls                     # Listar arquivos locais
sftp> lcd /dados/local      # Navegar entre diretórios locais
sftp> lpwd                  # Exibir diretório local atual

sftp> !whoami               # Executar comando shell local (ex: mostrar usuário)
sftp> !df -h                # Verificar espaço em disco local

Comandos Remotos

A manipulação no servidor de destino utiliza a sintaxe padrão similar ao Linux.

sftp> ls                        # Listar conteúdo remoto
sftp> cd /var/logs_remotos   # Mudar diretório remoto
sftp> mkdir novo_diretorio   # Criar pasta remota
sftp> rm arquivo_antigo.txt  # Remover arquivo remoto
sftp> chmod 644 config.cfg   # Alterar permissões remotas

Mecanismos de Transferência de Dados

Transferência Unitária e em Lote

sftp> put documento.txt        # Enviar um arquivo específico
sftp> get relatorio.pdf       # Baixar um arquivo específico
sftp> mput *.csv              # Upload de múltiplos arquivos usando curinga
sftp> mget *.tar.gz           # Download de múltiplos arquivos

Cópia Recursiva de Diretórios

Para copiar uma estrutura inteira de pastas, adicione a flag -r.

sftp> put -r projeto_completo  # Upload recursivo de diretório
sftp> get -r backup_remoto    # Download recursivo de diretório

Preservação de Atributos e Retomada

O parâmetro -p (minúsculo na transferência de dados) preserva metadados como datas de modificação. Para retomar transferências interrompidas, utilize reput e reget.

sftp> put -p grande_arquivo.zip  # Preservar timestamps no upload
sftp> reput dados_parciais.bin  # Retomar upload interrompido
sftp> reget video_incompleto.mp4 # Retomar download interrompido

Automação e Modo Não-Interativo

Execução Direta de Comando Único

Embora seja possível passar um comando via stdin com a flag -b -, para transferências diretas o scp costuma ser mais eficiente.

echo "get /var/logs_remotos/sistema.log /dados/local/" | sftp -b - admin@meuservidor.com

# Alternativa recomendada para este caso específico:
scp admin@meuservidor.com:/var/logs_remotos/sistema.log /dados/local/

Processamento em Lote (Batch Scripting)

Para operações complexas, crie um arquivo de texto contendo a sequência de comandos e execute-o com a opção -b.

Conteúdo do arquivo automacao_sftp.txt:

cd /var/backups
lcd /mnt/arquivos_local
mget *.tar.gz
bye

Executando o script de automação:

sftp -b automacao_sftp.txt admin@meuservidor.com

Tags: SSH sftp scp Linux shell-script

Publicado em 7-14 12:20