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