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.