O scp
comando 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
.
Índice
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 scp
significa seguro cp
. Em outras palavras, SCP é um protocolo e scp
é um programa.
scp
foi 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 scp
padrã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 scp
sintaxe 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
scp
scp
scp
Para ver a versão do OpenSSH instalada no seu computador, digite:
ssh-V
Copiando um único arquivo com scp
Como o cp
comando padrão, scp
copia 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.
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/
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
O scp
comando 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 -P
opçã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 .
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
O arquivo é copiado, mas renomeado para o nome de arquivo especificado.
ls -hl *.md
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 .
scp ./dp-1.md ./dp-2.md ./dp-3.csv dave@fedora-34.local:/home/dave/Downloads/
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/
Copiando diretórios recursivamente sobre scp
A -r
opçã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/
Copiando arquivos entre servidores remotos
Você pode até instruir scp
para 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, scp
nã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.
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 scp
comando emitido em nosso computador Ubuntu local, a sintaxe é:
scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/
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, scp
apenas 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.
Por padrão, os arquivos são copiados diretamente do computador de origem para o computador de destino. Você pode substituir isso usando a -3
opçã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/
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 -v
sinalizador (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 -C
opçã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.