- comandoscp – Secure copy
- Como instalar o scp
- Utilizar o scp – sintaxe básica
- exemplos de comandosscp
- 1. Saída verbosa
- 2. Transferir múltiplos ficheiros
- 3. Copiar todo o directório (recursivamente)
- 4. Copiar ficheiros através de 2 máquinas remotas
- 5. Acelere a transferência com compressão
- 6. Limite o uso da largura de banda
- 7. Conecte a um número de porta diferente no host remoto
- 8. Preserve os atributos do arquivo
- 9. Modo silencioso
- 10. Especifique o ficheiro de identidade
- 11. Utilize um ficheiro ssh_config diferente
- 12. Use cifra diferente
- Resumo
comandoscp – Secure copy
Scp (Secure Copy) é uma ferramenta de linha de comando para copiar ou transferir arquivos através de hosts. Ele usa o mesmo tipo de mecanismo de segurança como o programa ssh.
Neste rápido tutorial vamos ver alguns exemplos do comando scp e como ele pode ser usado para transferir arquivos com segurança.
Como instalar o scp
Scp é geralmente instalado por padrão na maioria das distribuições linux como parte dos pacotes openssh. No ubuntu/debian por exemplo, o pacote openssh-client fornece o programa scp.
$ dpkg -L openssh-client | grep scp/usr/bin/scp/usr/share/man/man1/scp.1.gz
Its o pacote OpenSSH que fornece os programas ssh, scp, sftp juntamente com muitas outras ferramentas. Então não temos que fazer nada extra aqui, exceto usar e aprender o programa.
Utilizar o scp – sintaxe básica
A sintaxe básica do scp é muito simples de memorizar. Parece assim
$ scp source_file_path destination_file_path
Dependente do host, o caminho do arquivo deve incluir o endereço completo do host, número da porta, nome de usuário e senha junto com o caminho do diretório.
Então se você estiver “enviando” arquivo de sua máquina local para uma máquina remota (uploading) a sintaxe seria assim
$ scp ~/my_local_file.txt _host.com:/some/remote/directory
Quando copiando arquivo de máquina remota para máquina local (download), sua aparência é apenas a inversa
$ scp _host.com:/some/remote/directory ~/my_local_file.txt# just download the file$ scp :/some/path/file.txt .
Isso é basicamente sobre usar o scp para tarefas regulares. Além disso, existem algumas opções e funções extras que o scp suporta. Vamos ter uma rápida visão geral dessas.
E sim, por padrão o scp sempre sobrescreve os arquivos no destino. Se você precisa evitar isso, use uma ferramenta mais poderosa chamada rsync.
exemplos de comandosscp
1. Saída verbosa
Com saída verbosa, o programa scp emitiria muitas informações sobre o que faz em segundo plano. Isto é frequentemente útil quando o programa falha ou é incapaz de completar o pedido. A saída verbose indicaria então o ponto exato onde o programa encontrou problemas.
$ scp -v ~/test.txt :/root/help2356.txtExecuting: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txtOpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013debug1: Reading configuration data /home/enlightened/.ssh/configdebug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 19: Applying options for *debug1: Connecting to 192.168.1.3 port 22.debug1: Connection established...... OUTPUT TRUNCATED
A saída seria grande e conteria informações detalhadas sobre como a conexão é feita, que configuração e arquivos de identidade estão sendo usados e assim por diante.
2. Transferir múltiplos ficheiros
Múltiplos ficheiros podem ser especificados separados por um espaço como este
$ scp foo.txt bar.txt :/path/directory/
Para copiar múltiplos ficheiros do anfitrião remoto para o directório local actual
$ scp :/path/directory/\{foo.txt,bar.txt\} .$ scp :~/\{abc.log,cde.txt\} .
3. Copiar todo o directório (recursivamente)
Para copiar um directório inteiro de uma máquina para outra utilize a opção r e especifique o directório
$ scp -v -r ~/Downloads :/root/Downloads
4. Copiar ficheiros através de 2 máquinas remotas
Scp também pode copiar ficheiros de uma máquina remota para outra máquina remota.
$ scp :/some/remote/dir/foobar.txt :/some/remote/dir/
5. Acelere a transferência com compressão
Uma opção super legal para acelerar a transferência para poupar tempo e largura de banda. Tudo o que você precisa fazer é usar a opção C para habilitar a compressão. Os arquivos são comprimidos na hora e descomprimidos no destino.
$ scp -vrC ~/Downloads :/root/Downloads
No exemplo acima movemos todo o diretório com a compressão ativada. O ganho de velocidade dependeria de quanto os arquivos poderiam ser comprimidos.
6. Limite o uso da largura de banda
Se você não quiser que o scp tome toda a largura de banda disponível, então use a opção l para limitar a velocidade máxima em Kbit/s.
$ scp -vrC -l 400 ~/Downloads :/root/Downloads
7. Conecte a um número de porta diferente no host remoto
Se o servidor remoto tiver daemon ssh rodando em uma porta diferente (o padrão é 22), então você precisa dizer ao scp para usar esse número de porta em particular usando a opção ‘-P’.
$ scp -vC -P 2200 ~/test.txt :/some/path/test.txt
8. Preserve os atributos do arquivo
A opção ‘-p’ (pequena), preservaria os tempos de modificação, tempos de acesso e modos do arquivo original.
$ scp -C -p ~/test.txt :/some/path/test.txt
9. Modo silencioso
No modo silencioso (opção ‘-q’), a saída scp seria suprimida, e desabilitaria o medidor de progresso assim como as mensagens de aviso e diagnóstico.
$ scp -vCq ~/test.txt :/some/path/test.txt
10. Especifique o ficheiro de identidade
Quando utilizar autenticação baseada em chave (sem palavra-passe), teria de especificar o ficheiro de identidade que contém a chave privada. Esta opção é passada directamente para o comando ssh e funciona da mesma forma.
$ scp -vCq -i private_key.pem ~/test.txt :/some/path/test.txt
11. Utilize um ficheiro ssh_config diferente
Utilize a opção ‘-F’ para especificar um ficheiro ssh_config diferente.
$ scp -vC -F /home/user/my_ssh_config ~/test.txt :/some/path/test.txt
12. Use cifra diferente
Scp por padrão usa a cifra AES/encryption. Algumas vezes você pode querer usar uma cifra diferente. Usando uma cifra diferente pode acelerar o processo de transferência. Por exemplo, blowfish e arcfour são conhecidos por serem mais rápidos que AES (mas menos seguros).
$ scp -c blowfish -C ~/local_file.txt :/remote/path/file.txt
No exemplo acima usamos a cifra do blowfish juntamente com a compressão. Isso pode aumentar significativamente a velocidade dependendo da largura de banda disponível.
Resumo
Embora o scp seja muito eficiente na transferência de arquivos com segurança, ele não possui os recursos necessários de uma ferramenta de sincronização de arquivos. Tudo que ele pode fazer é copiar colar todos os arquivos mencionados de um local para outro.
Uma ferramenta mais poderosa é o Rsync que não só tem todas as funções do scp, mas adiciona mais recursos para sincronizar inteligentemente os arquivos em 2 hosts. Por exemplo, ele pode verificar e carregar apenas os arquivos modificados, ignorar arquivos existentes e assim por diante.
Deixe uma resposta