Dominando SCP: Transfira Arquivos com Segurança Entre Hosts Locais e Remotos

Aprenda a sintaxe do scp para uploads seguros, downloads, cópias recursivas, portas SSH personalizadas e preservação de atributos de arquivos.

Dominando o SCP: Transferindo Arquivos com Segurança entre Máquinas Local e Remota

scp copia arquivos entre máquinas via SSH. É útil quando você precisa de um upload ou download rápido e seguro e já tem acesso SSH ao servidor.

Para trabalhos de sincronização grandes, transferências interrompidas ou implantações repetidas, rsync geralmente é uma ferramenta melhor. Para cópias únicas diretas, scp é simples e disponível na maioria dos sistemas Unix-like.

Sintaxe Básica

scp [OPÇÕES] ORIGEM DESTINO

Caminhos locais parecem com caminhos de arquivo normais. Caminhos remotos usam este formato:

[usuário@]host:/caminho/para/arquivo

Se você omitir usuário@, scp usa seu nome de usuário local para o login SSH. Se o servidor SSH remoto usar uma porta não padrão, use -P com P maiúsculo. -p minúsculo significa preservar atributos de arquivo.

Fazer Upload de um Arquivo

Para copiar um arquivo local para um servidor remoto:

scp relatorio_local.txt [email protected]:/home/usuario_remoto/documentos/

Isso envia relatorio_local.txt do seu diretório atual para o diretório documentos remoto.

Para renomear o arquivo durante o upload, inclua o nome do arquivo de destino:

scp relatorio_local.txt [email protected]:/home/usuario_remoto/documentos/relatorio-2026.txt

Fazer Download de um Arquivo

Para copiar um arquivo remoto para seu diretório local atual:

scp [email protected]:~/log_servidor.tar.gz .

Para salvá-lo com um nome local diferente:

scp [email protected]:~/log_servidor.tar.gz ./log-servidor-producao.tar.gz

Copiar um Diretório Recursivamente

Use -r para copiar uma árvore de diretórios:

scp -r pasta_projeto_local [email protected]:/var/www/

Isso copia o diretório e seu conteúdo para o destino. Esteja ciente de que scp -r segue links simbólicos que encontra durante a travessia, o que pode copiar mais dados do que você esperava.

Usar uma Porta SSH Personalizada

Se o SSH escutar na porta 2222, use -P maiúsculo:

scp -P 2222 config_local.ini [email protected]:/tmp/

Você também pode colocar a porta na sua configuração SSH e depois usar o alias do host:

Host web-prod
  HostName exemplo.com
  User usuario
  Port 2222

Então:

scp config_local.ini web-prod:/tmp/

Preservar Horários e Modos

Use -p minúsculo para preservar horários de modificação, horários de acesso e bits de modo do arquivo de origem:

scp -p script_importante.sh usuario@servidor:/tmp/

A propriedade geralmente não é preservada como acontece com ferramentas de arquivamento. Se a propriedade for importante, defina-a após a transferência ou use um processo de implantação projetado para esse requisito.

Solucionar Problemas com Modo Verboso

Use -v para ver detalhes da conexão SSH:

scp -v backup_grande.zip usuario@servidor:/backups/

A saída verbosa ajuda a diagnosticar falhas de autenticação, problemas de configuração SSH, problemas de chave de host e portas inesperadas.

Ativar Compressão Quando Ajudar

-C passa compressão SSH para a conexão:

scp -C logs.txt usuario@servidor:/tmp/

A compressão pode ajudar em links mais lentos com dados com muito texto. Pode não ajudar muito em arquivos já comprimidos como .zip, .gz, .jpg ou .mp4.

Copiar entre Dois Hosts Remotos

Você pode usar scp com dois caminhos remotos:

scp usuario_a@servidor_alfa:/data/db.sql usuario_b@servidor_beta:/backup/

No scp atual do OpenSSH, cópias remoto-para-remoto são transferidas através da sua máquina local por padrão. Use -R apenas quando você intencionalmente quiser que o host de origem se conecte diretamente ao host de destino:

scp -R usuario_a@servidor_alfa:/data/db.sql usuario_b@servidor_beta:/backup/

Com -R, o host de origem deve ser capaz de autenticar no destino sem solicitar senha.

Evitar Erros Comuns

Coloque entre aspas caminhos remotos que contenham espaços:

scp "arquivo local.txt" 'usuario@servidor:/tmp/arquivo local.txt'

Use caminhos locais absolutos ou claramente relativos quando um nome de arquivo local contiver dois pontos, porque scp trata host:caminho como um caminho remoto:

scp ./relatorio:final.txt usuario@servidor:/tmp/

Verifique novamente os caminhos de destino antes de copiar como root ou para diretórios do sistema. scp sobrescreverá um arquivo de destino existente sem perguntar no uso normal.

SCP ou Rsync?

Use scp para cópias seguras simples:

  • Fazer upload de um arquivo.
  • Fazer download de um arquivo.
  • Copiar um diretório pequeno uma vez.
  • Mover dados através de um ambiente apenas SSH.

Use rsync quando precisar de transferências retomáveis, sincronizações repetidas eficientes, manipulação de exclusão, padrões de exclusão, somas de verificação ou melhores controles de progresso.

Conclusão

Use scp origem destino para transferências rápidas de arquivos baseadas em SSH. Adicione -r para diretórios, -P para uma porta SSH personalizada, -p para preservar horários e modos, e -v quando precisar solucionar problemas de conexão SSH.