Como usar o comando SCP no Linux

Um tutorial fácil para ajudá-lo a transferir arquivos para um sistema remoto de seu sistema Linux usando o comando scp.

SCP significa 'Cópia Segura'. scpé um utilitário de linha de comando oferecido pelo Linux que permite a transferência de arquivos e diretórios de uma máquina para outra em uma rede insegura.

Se você deseja copiar arquivos de um sistema para outro, essa scppode ser uma boa opção para fazer uma transferência segura dos arquivos e diretórios. Quando as duas máquinas em comunicação estão conectadas na mesma rede, o uso scpse torna possível.

Você pode confiar fortemente no scpcomando para confidencialidade e integridade, pois o arquivo que está sendo transferido e a senha usada para a transferência são criptografados. Nenhuma informação sensível será revelada, mesmo se alguém tentar espionar o tráfego enquanto a transferência estiver em andamento.

Neste tutorial, veremos diferentes exemplos do scpcomando. Também veremos algumas das opções mais usadas com o scpcomando.

Introdução ao comando scp

Usando o scpcomando, você pode transferir arquivos / diretórios:

  • De sua máquina local para uma máquina remota.
  • Entre duas máquinas remotas.
  • De uma máquina remota para sua máquina local.

Sintaxe geral:

scp [Option] [source_file_name] [[email protected]_Host]:destination_folder

Vamos entender os atributos básicos deste comando, um por um.

  • [source_file_name] Este é o arquivo de origem que você deseja copiar.
  • [ [email protected] _Host] Este é o nome de usuário do sistema remoto onde você deseja copiar o arquivo. O endereço IP da máquina remota também é usado neste atributo após o @símbolo ' '.
  • [pasta_de_destino] Este é o diretório onde você deseja salvar o arquivo copiado.

Nota: O :símbolo de dois pontos ( ) é usado na sintaxe, pois diferencia entre os locais locais e remotos. Usamos dois pontos ( :) com o sistema remoto para especificar o diretório para o qual os arquivos devem ser copiados. Caso não especifiquemos o diretório de destino, os arquivos serão copiados para o diretório inicial do usuário do sistema remoto.

Opções usadas com scp

Algumas das opções mais populares usadas com o scpcomando estão listadas abaixo.

Opção Descrição
-C permitir a compressão do arquivo a ser transferido
-v dê a saída detalhada
-r copiar arquivos e diretórios recursivamente
-p preservar permissões, modos e tempos de acesso de arquivos
-P mudar a porta padrão usada pelo scpcomando

Opções frequentemente usadas com o comando scp

Veremos exemplos dessas opções mais adiante no tutorial.

Copiando o arquivo de um sistema local para um remoto

scppermite que você transfira arquivos de seu sistema local para um sistema remoto usando a seguinte sintaxe. Isso permite que você transfira ou carregue seus arquivos para um servidor localizado remotamente.

Sintaxe geral:

scp [file_name] [email protected]:[destination_folder]

Exemplo:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

Neste exemplo, estamos copiando um arquivo 'apache-tomcat-9.0.8.tar.gz' do sistema local para o sistema remoto cujo endereço IP é '143.110.178.221'.

No sistema remoto, o arquivo agora será copiado no diretório chamado 'gaurav'.

Saída:

[email protected]:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
[email protected]'s password: 
apache-tomcat-9.0.8.tar.gz                           100% 9589KB  79.8KB/s   02:00    
[email protected]:~$ 

Vamos verificar a saída do sistema remoto para o arquivo.

[email protected]:~/gaurav# ls
apache-tomcat-9.0.8.tar.gz
[email protected]:~/gaurav#

Assim, o arquivo é copiado com sucesso para o sistema remoto usando o scpcomando.

Copiar vários arquivos para um sistema remoto

No exemplo anterior, aprendemos a transferir um arquivo para o sistema remoto usando o scpcomando. Veremos agora o método para transferir vários arquivos de seu sistema local para um sistema remoto usando este comando.

Sintaxe geral:

scp [file 1] [file 2] [file n] [email protected]_host:[specific directory]

Vamos entender este processo simples com um exemplo.

Exemplo:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

Aqui, vários arquivos são mencionados no comando a serem copiados no sistema remoto.

Saída:

[email protected]:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav 
[email protected]'s password: 
ath.html                                      100%  199KB  94.7KB/s   00:02    
abc.txt                                       100%    0     0.0KB/s   00:00    
ppa-purge_0.2.8+bzr56_all.deb                 100% 4360    42.2KB/s   00:00    
[email protected]:~$

No sistema remoto:

[email protected]:~/gaurav# ls -l
total 9800
-rw-r--r-- 1 root root       0 Oct  5 08:58 abc.txt
-rw-r--r-- 1 root root 9818695 Oct  5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root  204057 Oct  5 08:58 ath.html
-rw-r--r-- 1 root root    4360 Oct  5 08:58 ppa-purge_0.2.8+bzr56_all.deb
[email protected]:~/gaurav#

Todos os três arquivos agora são copiados no sistema remoto.

Copiando um diretório para o sistema remoto

Você pode usar o scpcomando para copiar um diretório de seu sistema local para o sistema remoto. O processo é semelhante ao de copiar um arquivo. Para copiar também o conteúdo do diretório, você pode usar a -ropção com o scpcomando.

A -ropção é usada para copiar um diretório recursivamente. Isso significa que todas as subpastas e arquivos dentro do diretório também serão copiados.

Sintaxe geral:

scp -r [directory path] [email protected]_host:[target_directory]

Exemplo:

scp -r PycharmProjects [email protected]:gaurav

Saída:

[email protected]:~$ scp -r PycharmProjects [email protected]:gaurav
[email protected]'s password: 
__main__.py                                   100%  623     7.8KB/s   00:00    
__init__.py                                   100%   23     0.4KB/s   00:00    
completion.py                                 100% 2929    28.1KB/s   00:00    
search.py                                     100% 4728    38.7KB/s   00:00    
uninstall.py                                  100% 2963    32.5KB/s   00:00    
hash.py                                       100% 1681    21.3KB/s   00:00    
check.py                                      100% 1430    16.8KB/s   00:00    
configuration.py                              100% 7125    50.4KB/s   00:00    
show.py                                       100% 6289    49.8KB/s   00:00    
download.py                                   100% 6623    48.2KB/s   00:00  
[email protected]:~$  

Usar a -ropção com o scpcomando copia todas as subpastas e arquivos do diretório da máquina local para o sistema remoto.

Exibindo informações detalhadas sobre o processo scp

Você pode usar a opção -v(minúsculas v) para exibir as informações sobre os arquivos que estão sendo copiados em um sistema remoto ou local. Esse tipo de saída também é chamado de saída detalhada.

Quando essa opção é usada, as informações de depuração completas sobre o arquivo são exibidas na tela.

Sintaxe geral:

scp -v [file_name] [email protected]_host:

Exemplo:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team

Saída:

[email protected]:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/gaurav/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/gaurav/.ssh/id_rsa type -1
apache-tomcat-9.0.8.tar.gz                                                                                          100% 9589KB  99.8KB/s   01:36    
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds
Bytes per second: sent 101133.9, received 41.3
debug1: Exit status 0
[email protected]:~$

Aqui, na saída, você pode ver que as informações de depuração do arquivo estão sendo exibidas em seu terminal quando o scpcomando é usado com a -vopção.

Transferência de arquivos entre dois hosts remotos

O Linux permite que você se conecte a vários hosts remotos. Você pode transferir arquivos e diretórios entre dois hosts remotos usando o scpcomando.

Sintaxe geral:

scp [email protected]_1:/[file_name] [email protected]_2:[folder_to_save]

A sintaxe pode parecer um pouco mais ampla, mas é bem simples. Aqui, a primeira parte do comando fornece a entrada sobre o usuário remoto de onde o arquivo deve ser copiado. dois pontos (:) e /é usado para especificar o nome do arquivo ou o nome do diretório que deve ser transferido entre as duas máquinas remotas.

A segunda parte fornece informações sobre o sistema remoto de destino onde o arquivo deve ser copiado.

Exemplo:

scp -r [email protected]:gaurav [email protected]:/team

Aqui, estaremos copiando um diretório chamado 'gaurav' recursivamente do sistema local para um sistema remoto. O arquivo será copiado para uma pasta 'equipe' no sistema remoto.

Saída:

[email protected]:~$ scp -r [email protected]:/gaurav [email protected]:/team 
[email protected]'s password: 
1.py                                          100%  134   261.3KB/s   00:00    
variables.py                                  100%  377   949.2KB/s   00:00    
abc.txt                                       100%    0     0.0KB/s   00:00    
ath.html                                      100%  199KB  41.8MB/s   00:00    
[email protected]:~$

Aqui, usamos o scpcomando no sistema local para transferir um diretório chamado 'gaurav' de um servidor remoto para outro.

Transfira arquivos do sistema remoto para o seu sistema local

Você pode transferir facilmente os arquivos ou diretórios do sistema remoto para o seu sistema local usando o scpcomando. Em palavras mais simples, você pode baixar vários arquivos ou diretórios do servidor remoto para o seu sistema local usando o scp comando.

Sintaxe geral:

scp [email protected]_host:/files/file.txt /[folder_of_local_system]

Saída:

[email protected]:~$ scp [email protected]:how.txt .
[email protected]'s password: 
how.txt                                                                                                             100%   11     0.1KB/s   00:00    
[email protected]:~$

Aqui, baixei (copiei) o arquivo do servidor remoto para meu diretório inicial. Portanto, usei dot ( .) para especificar no comando a cópia do arquivo para meu diretório inicial.

Saída de amostra:

[email protected]:~$ ls -l how.txt
-rw-r--r-- 1 gaurav gaurav 11 Oct  6 09:49 how.txt
[email protected]:~$ 

Aqui, o arquivo agora é copiado para meu diretório inicial do servidor remoto.

Da mesma forma, você pode baixar vários arquivos ou diretórios do servidor remoto usando o scpcomando com as opções apropriadas.

Compactar arquivos para fazer transferências mais rápidas

Às vezes, a transferência de arquivos grandes pode ser demorada. Esse problema pode ser resolvido ao usar o scpcomando com a opção -C(maiúsculas C).

Usando a -C opção, compacta os arquivos de tamanho maior, o que facilita uma transferência mais rápida e, portanto, economiza tempo.

Um fato interessante sobre esta opção é que o arquivo é copiado com seu tamanho original no sistema de destino, mas durante o processo de transferência, o tamanho é compactado para permitir uma transferência mais rápida. Assim, a compressão só é feita na rede.

Sintaxe geral:

scp -C [file_name] [email protected]_host:[target_folder]

Vejamos um exemplo comparativo para entender a diferença.

Transferência sem opção -C:

[email protected]:~$ scp -rv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds
Bytes per second: sent 100693.7, received 53.7
debug1: Exit status 0
[email protected]:~$ 

Do exposto acima, podemos ver que o tempo necessário para a transferência é de 74,6 segundos. Tentaremos transferir o mesmo arquivo usando a opção -C e observar a diferença.

Transferir com a opção -C:

[email protected]:~$ scp -Crv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
.
.
webupload.img                                                                                                       100% 1834KB  98.7KB/s   00:18    
Sending file modes: C0664 1877552 router.img
Sink: C0664 1877552 router.img
router.img                                                                                                          100% 1834KB 100.3KB/s   00:18    
Sink: E
Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
DSL-2750U-Release-IN-T-01.00.07.zip                                                                                 100% 3666KB 218.5KB/s   00:16    
Sink: E
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds
Bytes per second: sent 100245.4, received 51.0
debug1: Exit status 0
debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00
debug1: compress incoming: raw data 1467, compressed 999, factor 0.68
[email protected]:~$

Aqui, podemos facilmente observar que o uso da -Copção com o scpcomando nos permitiu compactar o arquivo pela rede, provando ser uma opção que economiza tempo.

Usando uma porta ssh diferente para transferência de arquivos

Ao usar o scpcomando, a porta padrão implantada é a port 22. O usuário tem a liberdade de personalizar sua escolha de porta. Você pode usar a -P(opção P maiúscula) com o scpcomando para usar a porta de sua escolha.

Sintaxe geral:

cp -P [new_port_number] [file_name/directory_name] [email protected]:[destination_folder]

Exemplo:

scp -P 4248 dlink [email protected]:team

Usando o comando acima, o arquivo será transferido para o servidor remoto. Mas desta vez, a porta usada será em port 4248vez da padrão port 22.

Conclusão

Depois de passar por este tutorial, aprendemos sobre a natureza dinâmica do scpcomando usado para transferir ou copiar arquivos de um sistema para outro. Esta opção também pode ser usada para baixar arquivos ou diretórios do servidor remoto. Assim, podemos concluir que o scpcomando se mostra muito útil para transferências de arquivos quando você precisa lidar com mais de um sistema e também com servidores remotos simultaneamente.


Como copiar e colar no Chromebook

Como copiar e colar no Chromebook

A primeira coisa que você pode se perguntar ao mudar para um Chromebook é como fazer as coisas básicas - o tipo de coisa que você tinha nas costas da mão em seu sistema operacional anterior. Copiar e colar é uma função fundamental que você deve usar em um ponto ou outro.

Como fazer um teste de digitação no Linux com tt

Como fazer um teste de digitação no Linux com tt

Na era moderna da tecnologia, a digitação se tornou uma das atividades mais comuns para muitas profissões. Aprender a digitar mais rápido com precisão pode ajudá-lo a realizar mais tarefas no mesmo período.

Wi-Fi não funciona no Ubuntu? Veja como consertar

Wi-Fi não funciona no Ubuntu? Veja como consertar

O Ubuntu é popular por sua robustez e relativamente menos erros. Mas não sem seu saco de problemas, com certeza. Um desses problemas é com o driver Wi-Fi. Você pode ligar o sistema apenas para descobrir que o Wi-Fi não está funcionando.

Como criar e ler códigos QR no Chromebook

Como criar e ler códigos QR no Chromebook

Códigos de resposta rápida, ou códigos QR para abreviar, são códigos de barras avançados que contêm mais informações do que um código de barras tradicional. Esses códigos são bidimensionais, permitindo que você os escaneie vertical ou horizontalmente.

Como instalar e remover pacotes no Arch Linux

Como instalar e remover pacotes no Arch Linux

Quer instalar pacotes no Arch Linux, mas não sabe como? Muitas pessoas enfrentam esse problema quando migram pela primeira vez de distribuições baseadas em Debian para o Arch. No entanto, você pode gerenciar facilmente pacotes em seu sistema baseado em Arch usando gerenciadores de pacotes.

Como instalar o Spotify no Linux

Como instalar o Spotify no Linux

O Spotify é um dos maiores serviços de streaming de música que existe. Possui clientes nativos para dispositivos móveis (Android e iOS) e desktop (Mac e Windows).

9 comandos básicos para começar a usar o Linux

9 comandos básicos para começar a usar o Linux

Os guias de instruções do Linux geralmente esperam que você execute certas operações no terminal, que podem parecer intimidantes no início. Mas não se preocupe; esta folha de dicas de comandos do Linux cobrirá o processo de abertura de um terminal e emissão de alguns comandos úteis.

Como mover arquivos do Linux com o comando Mv

Como mover arquivos do Linux com o comando Mv

Embora você provavelmente já saiba como mover um arquivo no Linux usando o navegador de arquivos GUI, você pode estar se perguntando se existe um comando mover no terminal que permite mover arquivos rapidamente para diretórios diferentes. O comando mv é o que você deseja e é fácil de usar com sua sintaxe simples e alguns sinalizadores de segurança opcionais.

Diferença entre o superusuário raiz no Ubuntu

Diferença entre o superusuário raiz no Ubuntu

Quer saber qual é a diferença entre Root Superuser no Ubuntu? Bem, nós temos você coberto aqui.

As 10 melhores distribuições Linux baseadas em Debian

As 10 melhores distribuições Linux baseadas em Debian

O Debian padrão e seu derivado popular Ubuntu são ótimas opções versáteis para um sistema Linux, mas se você tiver necessidades mais especializadas, pode querer uma alternativa Debian.