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).
SSH, ou Secure Shell, é um protocolo que permite acesso seguro a computadores remotos.
Outros aplicativos de transferência de arquivos, como sftp
e rsync
, também podem utilizar SSH para proteger suas transferências de arquivos. Esses aplicativos nos permitem copiar nossos arquivos de servidores locais para remotos e copiar arquivos de servidores remotos para nossa máquina local.
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/
Se a pasta de destino no host remoto (/remote/folder/
) não for especificada, ela copiará o arquivo para o diretório inicial do usuário remoto.
O usuário especificado com username
precisa existir e ter permissão de gravação na pasta /remote/folder/
no sistema remoto de destino.
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
Usar .
(um ponto) como destino da cópia (em nosso exemplo substituindo localfile.txt
por .
, copiará o arquivo remoto para o diretório de trabalho atual usando o nome do arquivo original, neste caso: remotefile.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 tutorialmv
: 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.
Comentários