ssh scp screen

Como fazer cópias entre 2 hosts com o scp

Se você acessa pelo menos um servidor remoto via SSH, provavelmente terá utilidade para um comando de cópia, que permite trocar arquivos entre um host e outro — também através de uma conexão segura.
É isto que o comando scp faz: copia arquivos entre hosts, dentro de uma rede — com o uso do ssh, para transferência segura dos dados.
Durante o processo, o scp irá pedir a mesma senha que vocẽ usa para se autenticar via ssh — uma vez que ambos fazem parte do mesmo conjunto de ferramentas.

O comando scp, tal como o cp, irá sobrescrever arquivos no destino.
Portanto certifique-se de estar digitando a coisa certa e mantenha seus backups em dia.

Para este post, vou usar exemplos simples, em cima dos quais, você poderá construir procedimentos mais complexos, posteriormente.
Recentemente, configurei o .bashrc de uma máquina remota, para apresentar um prompt da linha comando personalizado — o que me ajuda a saber exatamente aonde estou realizando algum procedimento.
Como eu gostaria que a máquina local também tivesse um prompt customizado, pensei em usar o scp para copiar o arquivo .bashrc de lá para cá.
Tendo o nome do host remoto (tatooine, no meu caso) e sua respectiva senha, proceda assim:


scp justincase@tatooine:.bashrc ./

The authenticity of host 'tatooine (192.168.5.4)' can't be established.
RSA key fingerprint is 20:96:8d:4e:1c:d6:d5:40:e3:83:0a:f9:30:04:50:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'tatooine,192.168.5.4' (RSA) to the list of known hosts.
justincase@tatooine's password: 
.bashrc                                                                                           100%    0     0.0KB/s   00:00    

Na primeira conexão, as ferramentas ssh pedem confirmação (yes/no) — após o quê, a adicionam à lista de hosts conhecidos.
Você pode usar a opção ‘-r’ para copiar um diretório recursivamente, também:


scp -r justincase@tatooine:temporario/ temp/

justincase@tatooine's password:
error.log                    100% 5627     5.5KB/s   00:00     
error.log.0                  100% 6534     6.4KB/s   00:00     
error.log.2017-05-31.gz      100% 2086     2.0KB/s   00:00     
error.log.2017-06-01.gz      100% 1553     1.5KB/s   00:01     
error.log.2017-06-02.gz      100%  744     0.7KB/s   00:00     
error.log.2017-06-03         100% 7960     7.8KB/s   00:00     
error.log.2017-06-04         100% 6534     6.4KB/s   00:00     

Para copiar (ou subir) um arquivo local para um endereço remoto, use o seguinte exemplo:


scp -l 14 -C Downloads/piwigo-netinstall.php justincase@tatooine:~/

justincase@tatooine's password:
piwigo-netinstall.php                                                                      100%   15KB  14.9KB/s   00:00

No exemplo, acima, adicionei estas 2 opções:

  • -l 14 — que limita a banda em 14 Kbps. O que pode ajudar a não sobrecarregar a sua rede. Neste caso, como o arquivo tem 15 Kb, não houve diferença perceptível.
  • -C — aplica compressão ao(s) arquivo(s), em trânsito. Novamente, o comando é irrelevante para este caso (mas serve como exemplo), em virtude do tamanho ínfimo do arquivo copiado.

E se eu quiser copiar o mesmo arquivo entre dois hosts remotos — tatooine e coruscant?
A maneira mais simples de realizar este trabalho é copiando o arquivo objeto da transferência temporariamente para a máquina local — fazendo-a funcionar como intermediária da transação.
Veja como:


scp -3 jcase@tatooine:~/logs.txt jcase@coruscant:~/logs.txt


jcase@tatooine's password: jcase@coruscant's password:

Para realizar a cópia, o scp vai precisar que você forneça as senhas de cada um dos hosts.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *