O SCP está intimamente relacionado ao protocolo SSH e nasceu da mesma ideia.
O SCP garante que os dados permaneçam confidenciais e inalterados durante o trânsito como uma extensão do protocolo SSH.
Primeiramente, vamos entender como funciona este SCP, para depois veremos os comandos scp.
últimas postagens
O que é SCP?
SCP significa Secure Copy Protocol.
É um método seguro e eficiente para copiar arquivos e diretórios entre hosts locais e remotos ou entre dois hosts remotos.
É amplamente usado para transferir dados com segurança em uma rede. O SCP depende do SSH (Secure Shell) para estabelecer uma conexão segura e criptografar os dados durante o trânsito.
Se você precisa mover um único arquivo ou um diretório inteiro, o SCP fornece uma solução confiável para transferências remotas de arquivos.
Como funciona o SCP?
O SCP é construído sobre o protocolo SSH – que é um protocolo de rede criptográfica para login remoto seguro e execução de comandos. Ele usa os mesmos mecanismos de segurança do SSH, incluindo criptografia e autenticação, para proteger os dados durante a transmissão.
Ao usar o SCP, um usuário inicia um comando de cópia em sua máquina local que especifica o arquivo de origem e o local de destino em uma máquina remota. O SCP estabelece uma conexão SSH com o sistema remoto e copia com segurança os arquivos da origem para o destino.
Quando usar o SCP?
O SCP é particularmente útil nos seguintes cenários.
Backup de Servidor Remoto
O SCP permite que você faça backup de arquivos de um servidor remoto para sua máquina local ou vice-versa, o que garante redundância de dados e recuperação de desastres.
Implantação de Aplicativos
Ele também simplifica o processo copiando com segurança os arquivos necessários para cada sistema de destino ao implantar aplicativos em vários servidores,
Transferindo Arquivos Grandes
O SCP oferece um método alternativo confiável e seguro de transmissão de dados para arquivos grandes que podem ser muito grandes para serem enviados como anexos de e-mail.
Compartilhamento seguro de arquivos
O SCP garante que os dados sejam mantidos criptografados durante o trânsito enquanto envia arquivos confidenciais para outras pessoas.
Colaboração Remota
O SCP pode ser usado para compartilhar arquivos com segurança com colaboradores ou membros da equipe em diferentes locais.
Sintaxe de Comando SCP
Antes de começar a usar o comando SCP, vamos começar entendendo a sintaxe básica.
A sintaxe do comando SCP se parece com isto:
scp [options] [source] [destination]
Explicação da sintaxe
Opções
Esses são sinalizadores opcionais que modificam o comportamento do comando SCP. Você pode usar várias opções para personalizar o processo de transferência. Aqui estão algumas opções comuns:
-r: Copia recursivamente diretórios e seus conteúdos.
-p: preserva as permissões, carimbos de data/hora e modos do arquivo original.
-P: especifica o número da porta para a conexão SSH.
-i: Especifica o arquivo de chave privada para autenticação SSH.
-C: Use compactação para acelerar a transferência de dados.
-l: Limita a largura de banda usada para a transferência (em Kbit/s).
-v: Modo verboso – exibe mensagens de depuração durante a transferência.
-o: Passa uma opção para o cliente SSH. Ele pode ser usado para desabilitar a verificação estrita da chave do host.
Fonte
A fonte especifica o arquivo ou diretório que você deseja copiar. Pode ser um caminho local ou remoto – dependendo do contexto.
Destino
O destino especifica onde você deseja copiar a origem. Como a origem, também pode ser um caminho local ou remoto.
Exemplos de Comando
#1. Copie um arquivo do servidor local para o remoto
scp /path/to/local/file.txt user@remotehost:/path/to/destination/
/caminho/para/local/arquivo.txt: Este é o arquivo de origem que você deseja copiar de sua máquina local.
user@remotehost: Substitua o usuário pelo nome do usuário remoto e o host remoto pelo nome do host ou endereço IP do servidor remoto.
/caminho/para/destino/: Este é o caminho de destino no servidor remoto onde o arquivo será copiado.
Exemplo
No meu caso, escolhi um servidor remoto para transferir o arquivo.
Nome de usuário do host remoto – abhishekvarma
Endereço do host remoto – 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Ao conectar-se a uma máquina remota, ele solicita a senha. Aqui eu selecionei um arquivo zip para copiar.
Saída
E a saída ficará assim se não houver erro na conexão com um servidor remoto.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Copie um arquivo da máquina remota para a máquina local
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Igual ao anterior, substitua o usuário e o endereço do host remoto.
Exemplo
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Saída
Este é apenas o exemplo de saída no meu caso. O timestamp varia de acordo com a velocidade da conexão.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Copiar um diretório recursivamente
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Aqui, o sinalizador ‘-r’ diz ao SCP para copiar diretórios recursivamente (incluindo subdiretórios e seus conteúdos).
Exemplo
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Aqui, mencionei todo o diretório para copiar os arquivos.
Saída
sample.zip 100% 20KB 1.0MB/s 00:00 Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00 .swp 100% 12KB 894.2KB/s 00:00 .help.swp 100% 12KB 780.4KB/s 00:00
#4. Copiar arquivos que correspondem a um padrão
scp /path/to/local/*.txt user@remotehost:/path/to/destination/
*.txt – Este é um padrão curinga que corresponde a todos os arquivos com uma extensão .txt no diretório local especificado. Os caminhos de origem e destino são os mesmos de antes.
Exemplo
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Saída
Aqui, tentei com uma extensão .png.
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00
#5. Preservar atributos de arquivo
scp -p /path/to/local/file.txt user@remotehost:/path/to/destination/
Aqui, o sinalizador ‘-p’ preserva os tempos de modificação, tempos de acesso e modos do arquivo de origem ao copiar.
Exemplo
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Especifique uma porta SSH diferente
scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/
O sinalizador ‘-P’ especifica uma porta SSH diferente (22 neste caso) para a conexão SCP. Você pode usar qualquer porta que desejar.
Exemplo
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Copiar com compressão
scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/
Esse sinalizador ‘-C’ permite a compactação durante a transferência, reduzindo potencialmente o tamanho dos dados transferidos. Os endereços de origem e destino são os mesmos explicados anteriormente.
Exemplo
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Saída detalhada para depuração
scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/
Esta opção ‘-v’ ativa a saída detalhada, que fornece informações mais detalhadas durante o processo de transferência.
Exemplo
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
A saída de amostra ficará assim.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#9. Copie de remoto para local com saída detalhada
scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
As mesmas explicações do exemplo detalhado anterior, com as funções dos locais locais e remotos invertidas.
Exemplo
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Saída
A saída ficará assim.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#10. Copiar usando uma chave SSH diferente
scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/
Este sinalizador “-i /path/to/private_key.pem” especifica uma chave privada SSH diferente para autenticação.
Exemplo
scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
Se você tiver uma chave privada, poderá usá-la ou usar a chave padrão.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Copie vários arquivos para o servidor remoto
scp file1.txt file2.txt user@remotehost:/path/to/destination/
Este comando copia file1.txt e file2.txt do diretório local para o destino especificado no servidor remoto.
Exemplo
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
image.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Copiar um arquivo remoto com um nome diferente
scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt
Este comando copia file.txt do servidor remoto para o diretório local, renomeando-o como newfilename.txt no processo.
Exemplo
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip
Saída
As extensões de arquivo antigas e novas devem ser as mesmas durante a execução deste comando.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Copiando com Limite de Largura de Banda Específico
scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/
Este sinalizador ‘-l’ especifica um limite de largura de banda em Kbps (1000 Kbps neste caso) para a transferência.
Exemplo
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Saída
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Copiando arquivos e preservando links simbólicos
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/
O sinalizador ‘-p’ preserva os atributos do arquivo e o sinalizador -r copia recursivamente os diretórios. Este comando também preserva links simbólicos durante a cópia.
Exemplo
scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Saída
image.png 100% 39KB 1.8MB/s 00:00
#15. Copiando arquivos detalhadamente com compactação
scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/
Esse comando combina saída detalhada (-v) e compactação (-C) durante a transferência de arquivo.
Exemplo
scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Saída
A saída ficará assim.
scp: debug1: fd 3 clearing O_NONBLOCK Sending file modes: C0664 40050 image.png Sink: C0664 40050 image.png image.png d 6 clearing O_NONBLOCK scp: debug1: fd • clearing O_NONBLOCK image.png debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1 Transferred: sent 40220, received 2576 bytes, in 0.1 seconds Bytes per second: sent 352570.0, received 22581.3 root@ubuntu: ~ debug1: Exit status 0 debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96
#16. Copiando entre dois servidores remotos
Se você deseja transferir arquivos de um servidor remoto para outro, pode usar este comando.
scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/
Este comando transfere diretamente file.txt de remotehost1 para remotehost2.
Exemplo
scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop
Saída
file.txt 100% 512KB 512.0KB/s 00:00
Se houver algum erro ou problema durante a transferência, a saída pode exibir mensagens de erro que fornecem informações sobre o que deu errado.
ssh: connect to host source.example.com port 22: Connection refused lost connection
Nesse caso, a mensagem de erro sugere que a conexão SSH com o servidor de origem foi recusada. Pode ser devido a vários motivos, como nome de host incorreto, endereço IP, porta ou problemas com a configuração SSH.
Perguntas frequentes sobre SCP
Aqui estão algumas perguntas frequentes relacionadas ao protocolo SCP, juntamente com suas respostas.
Como o SCP difere do FTP ou SFTP?
FTP significa Protocolo de Transferência de Arquivos.
SFTP significa Protocolo de Transferência de Arquivos. Ambos são usados para transferências de arquivos.
O SCP opera sobre SSH e oferece criptografia e autenticação em um único protocolo, o que o torna mais seguro e eficiente.
Quando devo usar o SCP?
O SCP é mais adequado para cenários em que são necessárias transferências de arquivos seguras e confiáveis, como backups remotos, implantação de software, distribuição de arquivos de configuração e colaboração entre os membros da equipe.
O SCP é compatível com endereços IPv6?
Sim, o SCP oferece suporte a endereços IPv4 e IPv6, o que permite transferir arquivos por redes que usam qualquer esquema de endereçamento.
Conclusão✍️
Espero que você tenha achado este artigo útil para aprender sobre o SCP e como ele funciona.
Você também pode estar interessado em aprender sobre os Comandos do Linux para Administrador do Sistema