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.
[blog_subscription_form]