Como usar o comando scp no Linux
O comando scp
torna a cópia de arquivos entre máquinas Linux simples e segura. Ele usa segurança SSH, mas a melhor parte é que é simples. Se você pode usar cp
, você pode usar scp
.
Protocolo de cópia segura e scp
Vamos definir alguns termos: existe SCP e existe scp
. A letra maiúscula SCP significa Secure Copy Protocol . Minúscula scp
significa seguro cp
. Em outras palavras, SCP é um protocolo e scp
um programa.
scp
foi projetado para ser um meio seguro e confiável 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 efetuar login em computadores Linux remotos. Nas distribuições Linux, a funcionalidade SSH é fornecida pelo OpenSSH.
SCP está um pouco desatualizado, e preocupações foram levantadas sobre seu uso nos dias de hoje. A partir do OpenSSH 8.8, o SCP está obsoleto. As implementações modernas scp
usam o protocolo de transferência segura de arquivos por padrão. O SSH ainda é usado para conexões seguras, mas as transferências de arquivos são feitas por SFTP. É tudo invisível e acontece magicamente sob o capô, e a scp
sintaxe permanece a mesma.
Este rsync
programa é o preferido scp
, mas você pode encontrar um computador que não o tenha rsync
instalado e para o qual você não tenha privilégios de root, o que significa que você não pode instalá-lo. Para copiar arquivos de PC para PC em uma rede offline scp
é bom. Para scp
funcionar, você deve ter o SSH em execução em todos os computadores de e para os quais copiará.
Para ver a versão do OpenSSH instalada em sua máquina, digite:
ssh -V
Copiando um único arquivo
Como o cp
comando padrão, scp
copia os arquivos do local de origem para o 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 credenciais para uma conta de usuário com permissões de gravação para o local para o qual está carregando o arquivo.
Para enviar um arquivo chamado “sample.txt” para um computador chamado “fedora-34” na rede local, use a seguinte sintaxe:
scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/
A equipe é composta por:
- scp: comando scp
- ./sample.txt: O arquivo que vamos enviar. Está no diretório atual.
- dave@: A conta de usuário na máquina remota para a qual enviaremos o arquivo.
- fedora-34.local: O nome da rede do computador remoto.
- :/home/dave/Downloads/: O local para copiar o arquivo na máquina remota. Observe os dois pontos “:” que separam o nome e o caminho do computador.
Você será solicitado a inserir a senha da conta no computador remoto, após o que o arquivo será copiado.
Se desejar que o arquivo tenha um nome diferente na máquina remota, você pode anexar o nome do arquivo ao caminho de destino. Para copiar o mesmo arquivo e nomeá-lo “other-file.txt”, use a seguinte sintaxe:
scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/different-file.txt
O comando scp
substituirá automaticamente os arquivos existentes, portanto, tenha cuidado ao copiar os arquivos. Se um arquivo com o mesmo nome do arquivo copiado já existir no computador de destino, ele será substituído e perdido.
Se o computador de destino não estiver usando a porta SSH padrão 22, você poderá usar o -P
parâmetro (número da porta) para especificar o número de porta apropriado.
Obtendo um arquivo
Para copiar um arquivo de um servidor remoto, basta especificar o servidor remoto como origem e especificar o caminho local onde deseja copiar o arquivo como destino. Vamos copiar um arquivo chamado “development-plan.md” da máquina remota para o diretório atual na máquina 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 que especificamos.
ls -hl *.md
Copiando vários arquivos
Copiar vários arquivos em qualquer direção é muito 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/
Três arquivos são copiados para o computador remoto. Você também pode usar curingas. Este comando faz o mesmo que o comando anterior.
scp. /dp. dave@fedora-34.local:/home/dave/Downloads/
Cópia recursiva de diretórios
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 o 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é mesmo instruir a scp
copiar arquivos de um servidor remoto para outro. A sintaxe é bem 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 um local no servidor de destino.
Embora a sintaxe seja simples, garantir que todo o resto esteja no lugar exige um pouco mais de atençã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 acesso de gravação a esse local.
Um pré-requisito mais sutil é que o acesso SSH deve ser configurado entre sua máquina local e a máquina de origem e entre os servidores de origem e destino. Certifique-se de usar o SSH para fazer login no servidor de destino a partir do servidor de origem. Se você não puder fazer isso, scp
não poderá se conectar.
A configuração de chaves SSH para permitir acesso autenticado, mas sem senha, é de longe o método preferido. O uso de senhas torna-se confuso muito rapidamente e, como você é solicitado a inserir uma senha para cada conta de usuário, isso não permite automatizar totalmente o processo com um script.
Configuramos chaves SSH para as contas de usuário que usamos em cada servidor remoto. Isso forneceu acesso SSH contínuo ao outro servidor para os 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” na máquina Manjaro para a conta “dave” na máquina Fedora usando um scp
comando emitido de nossa máquina Ubuntu local, a seguinte sintaxe é usada:
scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/
Retornamos silenciosamente à linha de comando. Não há indicação de que algo tenha acontecido. Trabalhando na suposição de que nenhuma notícia é uma boa notícia, scp
apenas relatamos erros para esta cópia remota. Ao verificar o computador Fedora, vemos que os arquivos do computador Manjaro foram copiados e recuperados.
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 por meio do computador local. Isso requer acesso SSH contínuo de sua máquina local para a máquina 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 tenha acontecido, mesmo ao transferir arquivos pelo computador local. A prova do pudim, é claro, é verificar o computador de destino.
Outras opções
A -p
opção (preservar atributos do arquivo) preservará a criação do arquivo original, o proprietário e os sinalizadores de acesso para os arquivos carregados. Eles terão os mesmos metadados que os arquivos originais no computador de origem.
Se você vir mensagens de erro, tente repetir o comando e usar o -v
sinalizador (verbose) para ver detalhes sobre a tentativa de transferência. Você deve ser capaz de determinar o ponto de falha na saída.
A -C
opção (compress) compacta os arquivos conforme são copiados e os descompacta quando são recebidos. Isso é algo que remonta à era da comunicação lenta de modem entre computadores. Reduzir o tamanho da carga útil pode reduzir o tempo de transmissão.
Atualmente, o tempo gasto na compactação e descompactação de arquivos é provavelmente maior do que a diferença entre transferências compactadas e descompactadas. Mas como scp
é melhor usado para copiar arquivos entre computadores na mesma rede local, a velocidade de transferência não deve ser uma grande preocupação.
Deixe um comentário