Linux / Comando scp: copiar arquivos por SSH e conferir o destino
O comando scp copia arquivos entre o computador local e um servidor usando SSH. A ordem dos argumentos define a direção: primeiro vem a origem, depois o destino; o formato usuário@host:caminho identifica uma localização remota.
Desde o OpenSSH 9.0, o scp usa por padrão o SFTP, protocolo de transferência de arquivos sobre SSH. A opção -O seleciona explicitamente o protocolo SCP antigo quando uma necessidade de compatibilidade justifica isso. Confira a implementação instalada com man scp; distribuições podem oferecer versões e recursos diferentes.
Sintaxe e preparação
scp [opções] origem destino
Essa linha descreve a sintaxe; substitua os campos pelos arquivos e caminhos reais. No computador local, você precisa de um cliente scp. No servidor, precisa de acesso SSH, uma conta autorizada e, no modo padrão atual, suporte a SFTP. Confira a porta, as permissões de leitura na origem, de escrita no destino e o espaço disponível.
A chave de host identifica o servidor; a senha ou chave do usuário autentica a conta. Verifique a impressão digital do servidor por um canal confiável antes de aceitar uma chave desconhecida. O guia do comando ssh e da verificação da chave do servidor explica essa distinção. Não ignore um aviso de chave alterada apenas para conseguir copiar.
Os nomes server.example.com e server.example.test são ilustrativos. Troque o host, a conta e os caminhos pelos seus dados autorizados. Os exemplos abaixo usam caminhos de sistemas semelhantes ao Unix; a interpretação de caminhos locais depende do sistema e do shell.
Exemplos de envio, recebimento e diretórios
Enviar um arquivo local para o servidor: execute no diretório que contém report.txt. Neste exemplo, /home/alice/ deve ser um diretório remoto existente e acessível à conta alice. Um arquivo de mesmo nome no destino pode ser sobrescrito.
scp report.txt alice@server.example.com:/home/alice/
Receber um arquivo do servidor: a origem remota agora aparece primeiro. O ponto final representa o diretório local atual, que deve permitir escrita. Confira se já existe um report.txt local antes de executar.
scp alice@server.example.com:/home/alice/report.txt .
Copiar um diretório: -r inclui recursivamente o conteúdo de project/. Confira o tamanho total e o caminho de destino antes de iniciar. Segundo o manual do OpenSSH, a cópia recursiva segue links simbólicos encontrados durante a travessia; isso pode incluir dados além dos esperados.
scp -r project/ alice@server.example.com:/home/alice/
Escolher um destino que já é diretório e escolher um novo nome de destino podem produzir disposições diferentes. Confirme a estrutura esperada, em vez de presumir que uma barra final garante a mesma semântica de outras ferramentas de cópia.
Conferir a direção e o resultado
No comando seguinte, report.txt é a origem local e /tmp/report.txt é o arquivo remoto. A ordem origem–destino define o envio; os dois-pontos separam o host do caminho remoto. O diretório /tmp é apenas ilustrativo e pode ser limpo pelo sistema, portanto não representa um destino de backup durável.
scp report.txt user@server.example.test:/tmp/report.txt
O progresso pode aparecer durante a transferência, ou o comando pode terminar sem mensagem, conforme as opções e o contexto de execução. O scp termina com código de saída zero em caso de sucesso e maior que zero em caso de erro. Confira o código imediatamente no shell; uma linha de progresso isolada não comprova que a operação inteira terminou corretamente.
Depois da cópia, o comando ssh user@server.example.test 'ls -lh /tmp/report.txt' permite conferir o nome e o tamanho no servidor, se o acesso a esse comando estiver autorizado. Tamanhos iguais não comprovam identidade do conteúdo; quando isso for necessário, compare também hashes calculados com uma ferramenta confiável nas duas pontas. Não há uma saída de transferência real reproduzida neste artigo.
- Confirme a conta, a identidade do servidor e qual argumento é a origem e qual é o destino.
- Confira caminhos, arquivos existentes, permissões e espaço; preserve uma cópia dos dados importantes antes de sobrescrever.
- Execute a transferência e verifique o código de saída. Se houver falha, investigue a mensagem antes de repetir; pode haver um arquivo parcial no destino.
- Verifique no destino o arquivo e a estrutura copiada. Compare o conteúdo ou hashes quando a integridade exigir mais do que conferir nome e tamanho.
Opções principais
| Opção | Finalidade e condição |
|---|---|
-r |
Copia diretórios recursivamente. No OpenSSH, segue links simbólicos encontrados; confira o conteúdo e o tamanho esperado. |
-P porta |
Escolhe a porta SSH do servidor. É P maiúsculo; a porta precisa já estar disponível no servidor. |
-i arquivo_chave |
Seleciona o arquivo de identidade para autenticação por chave pública. A configuração SSH e o agente também podem influenciar as identidades oferecidas. |
-p |
Preserva os horários de modificação e acesso e os bits de modo, dentro das possibilidades do destino. Não equivale a preservar proprietário, listas de controle de acesso (ACLs) e todos os metadados de um backup. |
-O |
Usa o protocolo SCP antigo, por exemplo para um servidor sem SFTP. Exige atenção à interpretação de caminhos pelo shell remoto. |
A opção -P do scp corresponde à seleção de porta que o ssh faz com -p minúsculo. Informar outra porta no cliente não altera a configuração nem abre uma porta no servidor.
Cuidados com caminhos e transferências repetidas
Um arquivo local cujo nome contém dois-pontos pode ser confundido com uma especificação remota. O manual recomenda um caminho local explícito, relativo ou absoluto; por exemplo, o prefixo ./ pode desambiguar um nome relativo em um shell Unix. Para nomes com espaços, proteja o argumento segundo as regras do seu shell. Não aplique automaticamente exemplos de caminhos Unix a letras de unidade do Windows.
No protocolo antigo ativado por -O, a expansão de padrões depende do shell remoto e caracteres especiais exigem cuidado adicional com aspas. O modo SFTP tem regras diferentes: uma receita de aspas duplicadas criada para o protocolo antigo pode falhar no modo padrão. Use caminhos simples e explícitos sempre que possível; não troque de protocolo nem desative verificações de identidade para esconder um erro de caminho.
O scp pode sobrescrever arquivos e não cria automaticamente uma versão de segurança. Também não oferece a mesma interface de retomada nem a sincronização por diferenças de uma ferramenta dedicada. Para transferências grandes interrompidas ou sincronizações repetidas, avalie rsync, quando disponível nos ambientes envolvidos, escolhendo suas opções conforme a política de cópia. Igualar exclusões exige uma decisão explícita e pode apagar dados.
Na verificação deste artigo em 29 de outubro de 2026, foram executadas cópias locais com o scp do Git for Windows: cópia simples, sobrescrita de um arquivo descartável, cópia recursiva e preservação do horário de modificação passaram nas verificações de conteúdo ou horário correspondentes. A primeira tentativa não encontrou o programa local cp; a repetição funcionou após incluir o diretório do Git no PATH apenas do processo de teste. Cinco comandos dos exemplos passaram na análise de sintaxe do Bash. Esses testes não realizaram uma transferência SSH/SFTP, não verificaram permissões nativas do Linux e não comprovam acesso a um servidor remoto.
Pergunta frequente
A opção de porta do scp é -p?
Não. Use -P maiúsculo para selecionar a porta do servidor. O -p minúsculo preserva horários e bits de modo dos arquivos, conforme o suporte do destino.
Documentação oficial
Consulte o manual oficial do scp no OpenBSD para opções, caminhos e códigos de saída. As notas do OpenSSH 9.0 explicam a mudança do protocolo padrão para SFTP e as diferenças de expansão e aspas em relação ao protocolo antigo.




