Servidor SSH – Transferindo usando scp


comandos intermediário do GNU/Linux

Comando scp

Copia de arquivos ou diretórios via rede

Enviar arquivos para outra maquina da rede local ou internet, use no formato;

scp arquivo-a-copiar userdestino@ipdestino:~/

Após o IP acrescentei dois pontos, barra normal e caminho completo, para copiar para o home do usuário destino, eu posso substituir o caminho do home do usuário por “til”, segue alguns exemplos de linha de comando.

Copiar arqteste.txt para o home do usuário destino:

scp arqtest.txt ecouto@10.0.0.2:~/

Copiar teste.txt para o sub-diretório do home do usuário, /home/ecouto/copias/faq

scp teste.txt ecouto@10.0.0.2:~/copias/faq

Observe que foi substituido o /home/ecouto por “til”, o comando acima pode ser substituido por este sem o til;

scp teste.txt ecouto@10.0.0.2:/home/ecouto/copias/faq

Copiar todos os arquivos e sub-diretórios a partir do prompt de comando local para o home do usuário ecouto no destino.

scp -r * ecouto@10.0.0.2:~/

Copiar para um sub-diretorio especifico no micro de destino, não use (~) e informe o caminho:

scp -r * ecouto@10.0.0.2:/home/copias/copiadoserv

Salvar no destino com outro nome, também acrescentar a data e hora de criação:

scp -r /home/samba ecouto@10.0.0.2:/home/ecouto/servsamba-`date +%d.%b.%Y-%H-%M`

Resultado; caminho e nome do arquivo no destino tem este formato: /home/ecouto/servsamba-20.Out.2009-18-20

Atualizar paginas do Apache, requer alteração de permissão para usuário gravar.

scp -r * ecouto@10.0.0.2:/srv/www/default/html/ecouto

Download, buscar arquivos e diretórios em outra maquina, copiar da maquina remota para maquina local, pode fazer a conexão e a partir da linha de comando remota executar outra linha de comando para enviar arquivos para minha maquina, isto implica em fazer a conexão para depois enviar os arquivos, caso eu queira somente transferir os arquivos para minha maquina, então não precisarei fazer a conexão, em uma tacada só, a solução mais simples é esta;

scp -r user-remoto@maquina_remota:~/sub-diretório/diretorio-download .

scp user-remoto@maquina_remota:~/sub-diretório/arquivo-download .

O ponto no final da linha indica para salvar no diretório atual.

scp -r ecouto@10.0.0.5:~/acesso-livre .

Onde; ecouto é usuário da maquina remota, 10.0.0.5 é o IP da maquina remota, acesso-livre é o diretório na maquina remota que desejo copiar para a maquina local, observe ponto no final, indica para salvar a copia no diretorio local, mesmo diretório que executou a linha de comando, no exemplo acima -r indica para copiar o diretório acesso-livre, para copiar arquivos usei este formato.

scp ecouto@10.0.0.5:~/teste.txt .

Para salvar em outro local, substitui o ponto pelo caminho na maquina local, exemplo para salvar na maquina local em /home/ecouto/tmp

scp ecouto@10.0.0.5:~/teste.txt /home/ecouto/tmp

scp -r ecouto@10.0.0.5:~/acesso-livre /home/ecouto/tmp

scp -r ecouto@10.0.0.5:/home/ecouto/acesso-livre /home/ecouto/tmp

Este recurso é muito prático na copia de configuração de outra maquina da rede ou até mesmo via internet, exemplo de copia do script de firewall de outra maquina.

scp ecouto@10.0.0.9:/etc/rc.d/firewall.sh /etc/rc.d

Copiar o diretório squid com os arquivos de acl,

scp -r ecouto@10.0.0.11:/etc/squid /etc/

Dependendo do arquivo ou diretório, como nos exemplos acima, foi preciso ser root na maquina local para gravar e permissão de leitura na maquina remota.

Tem um espaço separador entre o nome do arquivo ou diretório remoto e o caminho local.

Dois comandos na mesma linha, usei ; para indicar o proximo comando, mesmo assim tenho que digitar a senha duas vezes.

Exemplo para download e apagar. Prático para transferir arquivos de backup, apagar depois da cópia.

scp  ecouto@10.0.0.5:~/teste.txt . ; ssh ecouto@10.0.0.5 ‘(rm ~/teste.txt)’

O resultado é mesmo que digitar em duas linhas.

scp  ecouto@10.0.0.5:~/teste.txt .
ssh ecouto@10.0.0.5 ‘(rm ~/teste.txt)’

Quando for o mesmo usuário nas duas maquinas, pode omitir o usuário, neste formato.

scp  10.0.0.5:~/teste.txt . ; ssh 10.0.0.5 ‘(rm ~/teste.txt)’

Quando a maquina remota está atrás de firewall, poderei fazer as conexões de maquina em maquina, copiar de uma para outra até disponibilizar em um local com acesso direto ou simplesmente acessar o firewall remoto e incluir uma regra que redirecione para a maquina que desejo alcançar.

Exemplo de comando em uma estação para acessar outra estação atrás de outra rede que tem firewall redirecionando a porta 2222 para a estação remota, baixar para o diretório local o diretório remoto /etc/postfix.

scp -P 2222 -r ecouto@10.0.0.8:/etc/postfix .

Práticas dirigidas

1 – /home/root/acesso-servidor

1

2 – /home/ecouto/acesso-cliente

1

3 – Copiando do cliente o backup-passwd que está no diretório home do usuário ecouto.

2

4 – copiando recursivamente e armazenando os arquivos no diretório atual

3

5 – Copiando recursivamente e especificando o caminho completo para onde serão armazenado os arquivos

4

6 – Copiando recursivamente e especificando o caminho completo e també a data da criação dos arquivos copiados

6


Um comentário sobre “Servidor SSH – Transferindo usando scp

  1. Boa Tarde…
    Gostaria de saber se existe uma maneira de remover um diretorio de um servidor para outro servidor ?
    Vi varios comandos de copia ou backup…. mas simplesmente um mv de um servidor para outro nao vi…

    Grato,
    Luis Ferreira

Os comentários estão desativados.