Se você precisa copiar arquivos de sua máquina local para um servidor remoto usando o protocolo SSH, poderá fazê-lo usando o comando SCP no Linux Ubuntu, Linux Mint e Debian como outros.

O utilitário SCP vem por padrão com SSH, é usado para transferir arquivos entre computadores remotos. Ele usa o protocolo SSH e tem a sintaxe muito semelhante ao comando cp (copiar).

O que é o comando SCP do Linux

scp, ou Secure File Copy, é um programa para copiar arquivos entre computadores remotos. Ele usa o protocolo SSH e está incluído por padrão na maioria das distribuições Linux e Unix, como Linux Ubuntu, Linux Mint, Linux Debian, Arch Linux, etc. Também está incluído nos pacotes OpenSSH.

Com o SCP, você pode transferir arquivos com facilidade e segurança entre um local remoto e um host, entre dois locais remotos ou copiar de seu computador local para um servidor remoto.

Como copiar arquivos no Linux via SSH usando SCP

Enquanto cp (comando de cópia no Shell) é para copiar arquivos locais, scp é para transferência remota de arquivos. A principal diferença entre cp e scp é que você terá que especificar o nome DNS ou o endereço IP do host remoto e fornecer uma credencial de nome de usuário para que o comando funcione. Você pode copiar arquivos com scp de seu local para remoto e de remoto para local.

Copiar um único arquivo local para o computador remoto usando o SCP

A sintaxe para copiar um único arquivo de seu computador local, que pode ser sua pasta atual ou qualquer outra pasta em seu computador local, para um computador remoto é:

# Da pasta atual, você não precisa especificar o caminho do arquivo

scp myfile.txt username@remoteserver:/remote/folder/

# De qualquer pasta do seu computador local, escreva o caminho local completo para o arquivo

scp /full/path/to/myfile.txt username@remoteserver:/remote/folder/

Copiar um único arquivo do computador remoto para o local usando o SCP

Você também pode copiar um arquivo que existe em um computador servidor remoto para o computador local usando scp. A sintaxe é parecida, basicamente você só precisa inverter a ordem das informações locais e remotas:


# Do remoto para a pasta local atual

scp username@remoteserver:/remote/folder/remotefile.txt  localfile.txt

# Do remoto para local, mas especificando o destino da pasta local para salvar o arquivo

scp username@remoteserver:/remote/folder/remotefile.txt  /path/to/local/folder/localfile.txt

Copiar vários arquivos usando SCP

Para copiar vários arquivos de sua máquina local para um servidor remoto, ou vice-versa, você pode passar cada arquivo original como um parâmetro, ou usar curingas:


# Especificando cada arquivo

scp myfile.txt /local/folder/myfile2.txt username@remoteserver:/remote/folder/

# Usando um curinga para copiar vários arquivos do computador remoto

scp username@remoteserver:/remote/folder/* .

Copiar arquivos e pastas recursivamente de local para remoto usando SCP

Para copiar arquivos e pastas recursivamente de um servidor local para um servidor remoto, você precisa usar a opção -r.

Isso pode ser útil para construir a mesma estrutura local para um projeto em um servidor remoto:

scp -r * username@remoteserver:/remote/folder/

Copiar arquivos usando SCP com credencial PEM ou CER

Se você não quiser digitar a senha do usuário remoto quando estiver copiando arquivos, você pode usar um arquivo .pem ou .cer para informar sua credencial segura para conexão ssh scp.

Observe que você ainda precisa escrever o nome de usuário no comando:

scp -i ~/.ssh/my-certificate.cer my-local-file.html [email protected]:/www/my-project/

Considerações Finais

Uma das maneiras mais úteis e rápidas de transferir arquivos em um modo seguro entre computadores localizados remotamente conectados por uma rede (internet) é usando o comando scp do Linux.

Outros comandos Linux para manipulação de arquivos que você deveria conhecer são:

  • cp: Para copiar arquivos e diretórios no sistema operacional - leia o tutorial
  • mv: Para mover arquivos e diretórios.
  • rsync: Para sincronizar arquivos e diretórios, frequentemente usado para backups.
  • dd: Utilizado para baixo nível de cópia e backup.