Transferir arquivos entre computadores de forma fácil e segura

Thiago Ribeiro Filadelfo
ArrayOf.io
Published in
4 min readMay 21, 2020

Usando o terminal de comando sem medo

Olás !

Em plena quarentena me deparei com a seguinte situação: precisava passar um arquivo de um computador para outro. Poderia ter feito de diversas formas gráficas ou não, por exemplo de forma gráfica usar FTP, com os programas Filezilla ou WinSCP ou através do terminal, ou simplesmente colocar no pendrive e transportar para outro lado.

Então me desafiei a usar essa forma não gráfica e aprender mais sobre como fazer no terminal de comando unix, no meu caso, mas tem praticamente em todos os terminais, e cá estou compartilhando essa experiência que tive.

Antes de começar a mão na massa, vamos conhecer um pouco da teoria, em especial o comando scp, que é a estrela desta postagem.

O que é SCP?

SCP ou Secure Copy, é um protocolo de rede que permite a transferência de arquivos ou pastas entre dois computadores. E também é o nome de um comando no terminal ou shell que iremos usar.

Para as pessoas que querem se aprofundar no assunto, deixo aqui mais siglas que compõem o bolo do SCP, são elas: RCP (Remote Copy), Telnet e SSH (Secure Shell).

Usamos o comando scp para transferirmos dados, os arquivos ou pastas são encriptados usando como base da conexão SSH, para que qualquer pessoa que bisbilhote o tráfego não receba nada sensível.

Sintaxe do comando scp?

A sintaxe do comando scp assume o seguinte formato:

scp [OPTION] [user@]SRC_HOST:]file [user@]DEST_HOST:]

Calma! Não se assuste com essa sintaxe cheia de coisinhas estranhas, vamos explorar cada trechinho dela e descobrir ao longo deste post, qual sua função e verá que é fácil.

Vamos aqui assumir 3 seguimentos após o comando scp, são eles:

  1. [Option]: opções para o scp: como cifra, configuração ssh, porta ssh, limite, cópia recursiva e etc. Esse comando é um pouco mais para o público avançado.

Para não ser injusto usamos alguns sim, :p,

  • –q: irá executar a operação em modo silencioso, que representa que somente os erros críticos serão mostrados.
  • –r: é para cópia recursiva, que vai incluir todos os subdiretórios. Quando estivermos copiando uma pasta
  • –p: vai preservar os tempos iniciais de modificação e atributos do arquivo.
  • –u: vai apagar a fonte do arquivo logo depois que a transferência for completada.

2. [[user@]SRC_HOST:]file]: essa estrutura representa de onde queremos e qual arquivo ou pasta queremos copiar, vamos quebrar a estrutura em sub-estruturas menores para entender:

[user@SRC_HOST]: user: representa qual usuário irá acessar o servidor, e o src_host: qual o servidor será acessado, podemos indicar o ip ou dns. Um exemplo prático:

root@192.168.0.1

Neste exemplo acima, estamos acessando o computador cujo o endereço ip é 192.168.0.1 com o usuário root.

[:file]: é a referência para um arquivo ou diretório a ser copiado. Observe atentamente que há um sinal de dois pontos antes do caminho do arquivo ou diretório. Por exemplo:

:/home/trfiladelfo/Downloads/post_medium_scp.md

Juntando as partes temos por exemplo essa instrução:

root@192.168.0.1:/home/trfiladelfo/Downloads/post_medium_scp.md

3. [user@]DEST_HOST:]: essa estrutura por sua vez, representa o diretório que queremos salvar a cópia do arquivo ou de outro diretório, a sintaxe é bem parecida com a do item 2. Por exemplo:

root@192.168.0.2:/home/trfiladelfo/Documents

Observação para copiar na própria máquina que está sendo realizada a conexão do scp, não se faz necessário a parte de identificação de usuário e o endereço do computador. Então a sintaxe ficaria assim:

/home/trfiladelfo/Documents

Desta forma, representa localhost e atente-se que também não tem a necessidade de colocar os dois pontos no início.

Em um cenário mais claro, com todos os conceitos apresentados e juntando para formar a instrução completa o comando parecerá algo como:

scp root@192.168.0.1:/home/trfiladelfo/Downloads/post_medium_scp.md /home/trfiladelfo/Documents

Viu como é simples?

Aqui estamos copiando o arquivo "post_medium_scp.md" que encontra-se na máquina de endereço "192.168.0.1" no diretório "/home/trfiladelfo/Downloads/", o acesso será feito pelo usuário root e será copiado para própria máquina que realizou a conexão para o diretório "/home/trfiladelfo/Documents".

Et voilà menininho !!

Detalhe importante

Anteriormente comentei que o comando scp usa como base a encriptação SSH, portanto será necessário fazer a configuração do SSH antes de sair usando.

Eu costumo fazer assim, no terminal tento conectar via SSH o computador remoto, através da seguinte instrução

ssh root@192.168.0.1

Dai irá ser gerada uma chave RSA, que é uma chave de identidade privada, usada para criptografar os dados, você pode observar no diretório "~/.ssh/id_rsa" terá esse arquivo.

Resumo

Vimos aqui que não é necessário termos sempre uma interface gráfica para fazer copias de arquivos, as vezes nos deparamos com manutenções em servidores e lá não tem como abrir uma janela bonita, elegante :).

Então nos resta usar o terminal de comando para fazer as interações com essa máquina, usando essa postagem que ensina a usar o comando scp, você não terá mais medo de usar o terminal. E esse conhecimento ajuda você a tornar-se um full-stack.

Em falar nisto convido a todos, a conhecer a ArrayOf, uma empresa focada em treinamentos para você se tornar um full-stack hero! :)

Se você chegou até aqui o meu muito obrigado, e nos veremos em breve com mais uma dica ou macete bacaninha.

--

--