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
2 – /home/ecouto/acesso-cliente
3 – Copiando do cliente o backup-passwd que está no diretório home do usuário ecouto.
4 – copiando recursivamente e armazenando os arquivos no diretório atual
5 – Copiando recursivamente e especificando o caminho completo para onde serão armazenado os arquivos
6 – Copiando recursivamente e especificando o caminho completo e també a data da criação dos arquivos copiados
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