Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Novo Kubuntu Natty muito bom
Por Phenix
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Utilizando tar com ssh para backups sem ocupar espaço na máquina cliente
Linux user
Publicado por Renato Lopes de Morais em 14/12/2010

Login: renatolmorais, 10333 pontos | Blog: http://renatolmorais.blogspot.com
[ Hits: 4309 ]

Utilizando tar com ssh para backups sem ocupar espaço na máquina cliente

Geralmente queremos fazer um backup e copiar para uma máquina na rede, mas dispomos de pouco espaço na máquina onde estão os dados ou simplesmente não queremos ocupar espaço para não gerar carga desnecessária. Uma solução é utilizar o tar e ssh com redirecionamento da saída.

Adaptado do artigo Compactando diretórios e transferindo via pipe por SSH do usuário Jefferson Diego.

O servidor de backup do local onde eu trabalho possui um robô de backup controlado por um programa chamado Veritas Netbackup.

Recentemente este robô deu problema. Saímos então em busca de soluções para backup.

Concentrei meus estudos em ferramentas open source e pensei se seria possível construir um script de backup eficaz e eficiente. Eficaz no sentido de funcionar, e eficiente no sentido de não gerar carga na máquina que continha os dados originais.

Uma solução aceitável seria montar em cada máquina uma unidade de rede para onde os dados iriam. Assim seria necessário criar um script em cada máquina para copiar os dados a serem salvos para essa unidade de rede.

Outra solução encontrada foi utilizar o tar com o ssh para que apenas o servidor de backup executasse os scripts. É essa solução que apresento.

O comando é bem simples:

$ ssh user@host "tar -cf - <conteúdo a ser salvo> | bzip2 -9vv" | cat > arquivo_destino.tar.bz2

Ou então:

$ ssh user@host "tar jcvf - <conteúdo a ser salvo>" | cat > arquivo_destino.tar.bz2

A primeira linha eu adaptei do artigo original. O autor utiliza o tar separado do bzip2, provavelmente porque com o bzip2 a saída pode ser refinada e também para melhorar a compressão dos dados. Mas as duas funcionam.

Não se esqueça de adaptar o código para sua necessidade, substituindo:
  • user pelo usuário;
  • host pela máquina cliente;
  • <conteúdo a ser salvo> pelo caminho absoluto do conteúdo;
  • arquivo_destino.tar.bz2 pelo nome do arquivo de destino;

Utilizamos o ssh para executar um comando na máquina cliente.

O comando a ser executado é a compactação do arquivo.

Através do pipe, redirecionamos a saída para o programa cat na máquina local.

Assim temos o conteúdo listado na máquina local.

Com o redirecionamento para o arquivo_destino.tar.bz2, conseguimos obter o arquivo compactado.

Se você fizer a cópia de apenas um arquivo dentro do diretório, o tar criará toda a árvore de diretórios em que o arquivo está contido.

Por exemplo, suponha que o arquivo que queremos copiar está em /home/diretorio. Se utilizarmos o comando acima, o arquivo criado, ao ser descompactado, criará a árvore home/diretorio dentro do diretório corrente. Para evitar isso, utilize a opção -C, assim:

$ ssh user@host "tar -jcvf - -C /home/diretorio <conteudo a ser salvo>" | cat > temp.tar.bz2

Ex.: Temos o arquivo temp.ext2 (um arquivo formatado como sistema de arquivos ext2 que contém arquivos e diretórios). Ele está na pasta /home/testes. Sendo assim, fazemos:

$ ssh root@192.160.0.1 "tar -jcvf - -C /home/testes temp.ext2" | cat > temp.tar.bz2

No servidor de backup, descompactamos o arquivo:

$ tar jxvf temp.tar.bz2
temp.ext2

Para verificar, basta utilizar o comando md5sum no lado cliente e no lado servidor, gerando a soma MD5 para os arquivos temp.ext2 tanto do cliente quanto do servidor.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Nova distro brasileira - Librix Linux
   Dica Linux recomendada Instalando e configurando um servidor LAMP (Linux, Apache, MySQL e PHP) no Debian Etch
   Dica Linux recomendada Desligar e reiniciar o computador através da linha de comando
   Dica Linux recomendada Bloqueio de Ultrasurf usando apenas Iptables
   Dica Linux recomendada Coloque seu papo em dia com Pidgin multi-protocolo

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.