Como usar o comando scp no Linux

Um terminal Linux.

O scpcomando torna a cópia de arquivos entre computadores Linux fácil e segura. Ele usa segurança SSH , mas o melhor de tudo é que é simples. Se você pode usar cp, você pode usar scp.

O que é scp e o protocolo de cópia segura?

Vamos definir alguns termos: existe SCP e existe scp. O SCP maiúsculo significa Secure Copy Protocol . A letra minúscula scpsignifica seguro cp. Em outras palavras, SCP é um protocolo e scpé um programa.

scpfoi projetado para ser um meio seguro de copiar arquivos entre computadores Linux remotos . Ele usa SSH para estabelecer conexões seguras. SSH, ou shell seguro, é um protocolo de rede criptográfico frequentemente usado para acessar e fazer login em computadores Linux remotos. Nas distribuições Linux , a funcionalidade SSH é fornecida pelo OpenSSH.

O SCP é um tanto antigo e foram levantadas preocupações sobre seu uso nos dias atuais. Desde a versão 8.8 do OpenSSH, o SCP foi considerado obsoleto. Implementações modernas scppadrão para usar o Secure File Transfer Protocol por padrão. SSH ainda é usado para conexão segura, mas as transferências de arquivos são feitas por SFTP . Tudo isso é invisível e acontece magicamente nos bastidores, e a scpsintaxe permanece a mesma.

O programa é preferível ao , mas você pode encontrar um computador que não tenha o rsync instalado e para o qual você não tenha privilégios de root , o que significa que você não pode prosseguir e instalá-lo. Para copiar arquivos de um computador para outro em uma rede independente, é perfeitamente adequado. Para funcionar, você deve ter o SSH em execução em todos os computadores de onde você copiará.rsync scpscpscp

Para ver a versão do OpenSSH instalada no seu computador, digite:

ssh-V

Obtendo a versão do OpenSSH

Copiando um único arquivo com scp

Como o cpcomando padrão, scpcopia arquivos do local de origem para o local de destino. Para copiar um arquivo para um computador remoto, você deve saber o endereço IP ou o nome da rede do computador remoto. Você também deve ter as credenciais de uma conta de usuário que tenha privilégios de gravação para o local para o qual está enviando o arquivo.

Recomendado:  Como construir seu próprio computador, parte três: preparando o BIOS

Para enviar um arquivo chamado “sample.txt” para um computador chamado “fedora-34” na rede local, a sintaxe é:

scp ./sample.txt dave@fedora-34.local:/home/dave/Downloads/

Obtendo a versão do OpenSSH

O comando é composto por:

  • scp : O comando scp
  • ./sample.txt : O arquivo que vamos enviar. Isso está no diretório atual.
  • dave@ : A conta de usuário no computador remoto para o qual enviaremos o arquivo.
  • fedora-34.local : O nome da rede do computador remoto.
  • :/home/dave/Downloads/ : O local para copiar o arquivo no computador remoto. Observe os dois pontos “:” que separam o nome do computador e o caminho.

Você será solicitado a inserir a senha da conta no computador remoto e, em seguida, o arquivo será copiado.

Se quiser que o arquivo tenha um nome diferente no computador remoto, você pode adicionar um nome de arquivo ao caminho de destino. Para copiar o mesmo arquivo e chamá-lo de “arquivo diferente.txt”, use esta sintaxe:

scp ./sample.txt dave@fedora-34.local:/home/dave/Downloads/diferente-file.txt

Obtendo a versão do OpenSSH

O scpcomando substituirá silenciosamente os arquivos existentes, portanto, tome cuidado ao copiar arquivos. Se já existir um arquivo no computador de destino com o mesmo nome do arquivo que você está copiando, ele será substituído e perdido.

Se o computador de destino não estiver usando a porta SSH padrão 22, você poderá usar a -Popção (número da porta) para fornecer o número da porta apropriado.

Recuperando um único arquivo

Para copiar um arquivo de um servidor remoto, basta colocar o servidor remoto como origem e colocar o caminho local onde deseja que o arquivo seja copiado como destino. Vamos copiar um arquivo chamado “development-plan.md” do computador remoto para o diretório atual no computador local.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md .

Obtendo a versão do OpenSSH

Se você adicionar um nome de arquivo ao caminho local, o arquivo será copiado e receberá esse nome.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md ./dp-1.md

Obtendo a versão do OpenSSH

O arquivo é copiado, mas renomeado para o nome de arquivo especificado.

ls -hl *.md

Obtendo a versão do OpenSSH

Copiando Vários Arquivos

Copiar vários arquivos em qualquer direção é fácil. Você pode listar quantos arquivos de origem desejar. Aqui, estamos copiando dois arquivos markdown e um arquivo CSV .

Recomendado:  Wi-Fi x Ethernet: quanto melhor é uma conexão com fio?

scp ./dp-1.md ./dp-2.md ./dp-3.csv dave@fedora-34.local:/home/dave/Downloads/

Obtendo a versão do OpenSSH

Os três arquivos são copiados para o computador remoto. Você também pode usar curingas. Este comando faz exatamente a mesma coisa que o último comando.

scp./dp. dave@fedora-34.local:/home/dave/Downloads/

Obtendo a versão do OpenSSH

Copiando diretórios recursivamente sobre scp

A -ropção (recursiva) permite copiar árvores de diretórios inteiras com um único comando. Colocamos dois arquivos em um diretório chamado “data” e criamos um diretório chamado “CSV” dentro do diretório “data”. Colocamos um arquivo CSV no diretório “data/CSV”.

Este comando copia os arquivos e recria a estrutura de diretórios no computador remoto.

scp -r ./data dave@fedora-34.local:/home/dave/Downloads/

Obtendo a versão do OpenSSH

Copiando arquivos entre servidores remotos

Você pode até instruir scppara copiar arquivos de um servidor remoto para outro. A sintaxe é bastante simples. Você fornece o nome da conta e o endereço de rede do servidor de origem e o nome da conta e o endereço de rede do servidor de destino. Os arquivos são copiados do servidor de origem e copiados para o local no servidor de destino.

Embora a sintaxe seja simples, garantir que todo o resto esteja no lugar exige um pouco mais de reflexão. Obviamente, o local para o qual você está tentando copiar os arquivos no servidor remoto deve ser acessível pela conta de usuário especificada na linha de comando. E essa conta de usuário deve ter permissões de gravação nesse local.

Um pré-requisito mais sutil é que o acesso SSH seja configurado entre o computador local e o computador de origem, e também entre os servidores de origem e de destino. Certifique-se de poder usar SSH para efetuar login no servidor de destino a partir do servidor de origem. Se você não conseguir fazer isso, scpnão conseguirá se conectar.

Configurar chaves SSH para que você possa usar acesso autenticado, mas sem senha, é de longe o método preferido. O uso de senhas torna-se complicado muito rapidamente e, como é solicitada a senha de cada conta de usuário, impede que você automatize totalmente o processo com um script.

Configuramos chaves SSH para as contas de usuário que usamos em cada servidor remoto. Isso proporcionou acesso SSH contínuo ao outro servidor para esses dois usuários. Isso nos permite transferir arquivos em qualquer direção, usando essas duas contas de usuário.

Recomendado:  Leve um grande som de cinema para sua TV com estas ofertas de barra de som

Para copiar arquivos da conta de usuário “davem” em um computador Manjaro para a conta “dave” em um computador Fedora, por meio de um scpcomando emitido em nosso computador Ubuntu local, a sintaxe é:

scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

Obtendo a versão do OpenSSH

Voltamos silenciosamente à linha de comando. Não há indicação de que algo aconteceu. Trabalhando com a premissa de que nenhuma notícia é uma boa notícia, scpapenas reporta erros nesta cópia remota para remota. Ao verificar o computador Fedora podemos ver que os arquivos do computador Manjaro foram copiados e recebidos.

Obtendo a versão do OpenSSH

Por padrão, os arquivos são copiados diretamente do computador de origem para o computador de destino. Você pode substituir isso usando a -3opção (três vias).

Com esta opção, os arquivos são transferidos do destino para a origem, através do seu computador local. Para que isso aconteça, é necessário que haja acesso SSH contínuo do seu computador local ao computador de destino.

scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

Obtendo a versão do OpenSSH

Ainda não há indicação de que algo aconteceu, mesmo ao canalizar os arquivos através do seu computador local. A prova do pudim, claro, é verificar o computador alvo.

Outras opções de SCP

O -p(preservar atributos do arquivo) manterá a criação, propriedade e sinalizadores de acesso do arquivo original nos arquivos transferidos. Eles terão os mesmos metadados dos arquivos originais no computador de origem.

Se você vir mensagens de erro, tente repetir o comando e use o -vsinalizador (detalhado) para ver informações detalhadas sobre a tentativa de transferência. Você deve ser capaz de identificar o ponto de falha na saída.

A -Copção (comprimir) compacta os arquivos à medida que são copiados e os descompacta quando são recebidos. Isso é algo que remonta à era das comunicações lentas entre computadores por modem. Reduzir o tamanho da carga útil pode reduzir os tempos de transmissão.

Hoje em dia, o tempo necessário para compactar e descompactar os arquivos provavelmente demorará mais do que a diferença entre as transmissões compactadas e descompactadas. Mas como scpé melhor usado para copiar arquivos entre computadores na mesma LAN , a velocidade de transmissão não deve ser uma grande preocupação.