Backup fácil no Ubuntu com Groovy e Groosh

Em um projeto de desenvolvimento de software é comum usar boas práticas de gerência de configuração e ambiente. Essas práticas são na maioria traduzidas em processos de ferramentas.

Ferramentas são utilizadas para diversos propósitos como controlar a versão do código ou controlar os buils do projeto ou controlar e gerenciar o bugs e issues do projeto. Normalmente por questões de custo e performance essas ferramentas ficam em um ambiente Linux. Logo não basta apenas ter um bom conjunto de ferramentas que auxiliam no desenvolvimento mas é necessário ter bons scripts de backup também.

Utilizando o Bugzilla por exemplo como ferramenta de BugTracking você possuirá uma base de bugs e ocorrências sobre eles. Você não vai querer perder esses dados pois eles são muito úteis para tratar e controlar a evolução doa software mas também para o trabalho de métricas de um profissional de Qualidade de software.

Bom já que não queremos perder essas informações precisamos fazer backup. Mas qual a melhor maneira de fazer esse backup? Uma maneira fácil e eficiente é usar os scripts bash do próprio linux. Mas e se você precisar fazer algum script de backup mais apurado? Nem todos os desenvolvedores Java são programadores bash! Então que tal fazer os backups com Groovy?

O que é Groovy?

Groovy é uma linguagem de script que roda em cima do Java. Com o Groovy podemos ter toda a robustez do Java mas em forma de script e com isso ganhamos em simplicidade e produtividade acima de tudo.



Groovy + Bash + Shell ?

O Groovy tem um modulo muito legal que é o Groosh. Se trata de um MOP que abstrai as chamadas ao shell ou bash. Com ele podemos invocar os principais comandos linux em um script Groovy com isso podemos criar scripts poderosos de backup sem reinventar a roda.

Vamos então a uma passo a passo para a instalação do Java 6 no linux e também a instalação do Groovy e é claro do Groosh também.

Instalando o JDK 6 no Ubuntu

primeiramente você deve remover todas as versões do Java que por ventura já estejam instaladas na máquina. Você deve remover os pacotes do synaptic, rpm e por ventura se você tiver instalado algum jdk na mão também deve ser removido. Esse procedimento de remoção você pode pular, mas por uma questão de boas práticas de gerência de configuração é muito saudável que você a faça.

Então baixe o JDK 6 no site da sun. Vamos utilizar o JDK 6 Update 11. Logo você deve baixar o arquivo *jdk-6u11-linux-i586.bin*. Uma vez esse arquivo baixado você deve o tornar executável, você pode fazer isso com o comando chmod +x jdk-6u11-linux-i586.bin.

Agora crie a pasta java dentro do diretório /usr. você pode fazer isso com o comando: sudo mkdir /usr/java a sua senha será solicitada. Agora basta executar o arquivo com o comando: sudo ./jdk-6u11-linux-i586.bin você devera segurar ENTER até terminar de ler a licensa e por fim digite yes para finalizar a instalação.

Agora basta criar as váriaveis de ambiente do Java, evite o arquivo /home//.bashrc com o vim, então comando fica assim:
sudo /home//.bashrc

Aqui vamos colocar o export da váriavel de ambiente do Java. Adciione as seguintes linhas no arquivo:
#
# Variaveis de ambiente do Java 6
#
JAVA_HOME=/usr/java/jdk1.6.0_11
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME

Para testar feche o shell e abra de novo o shell e digite: java -version, deve aparecer algo do tipo:
pacheco@cromx:/usr/java$ java -version
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Server VM (build 11.0-b16, mixed mode)

Instalando o Groovy no Ubuntu

Por uma questão de boas pricas também vamos instalr o Groovy no /usr/java. Então se posicione nesta pasta antes de continuar.

Após você ter instalado o java devidamente agora vamos instalar o Groovy. Vamos utilizar a versão 1.5.7 do Groovy, você deve baixar no site do groovy o arquivo groovy-binary-1.5.7.zip. Uma vez o arquivo baixado você deve o tornar executável para isso use o comando: sudo chmod +x groovy-binary-1.5.7.zip. OK agora vamos extrair o arquivo usando o unzip. O comando fica assim: sudo unzip groovy-binary-1.5.7.zip.

Agora é necessaŕio setar as váriaveis de ambiente do Groovy, edite novamente o arquivo /home//.bashrc com o vim e adicione as seguintes linhas ao final do arquivo:

#
# Variaveis de ambiente do Groovy
#
GROOVY_HOME=/usr/java/groovy-1.5.7
PATH=$GROOVY_HOME/bin:$PATH
export GROOVY_HOME

Para testar a instalação do Groovy feche o shell e o abra de novo e digite: groovyConsole. Deve aparecer uma tela semelhante a essa:



Instalando o Groosh no Groovy do Ubuntu

Para finalizar as instalações agora só falta instalar o Groosh. Ele é instalado dentro do groovy como uma biblioteca do tipo jar. Então vá no site do Groosh e baixe o mesmo. Vamos utilizar a versão 0.3.0 do Groosh.

Baixe o arquivo groovy-groosh-0.3.0-bin.tar.gz. deixe o arquivo executavel com o comando: sudo chmod +x
groovy-groosh-0.3.0-bin.tar.gz. Agora é necessaŕio extrair o arquivo com o comando tar. Faça isso com esse comando: sudo tar -vzxf groovy-groosh-0.3.0-bin.tar.gz. Agora basta copiar o jar do groosh para a pasta de libs do groovy vocÊ faz isso com esse comando a baixo:
cp groovy-groosh-0.3.0.jar /usr/java/groovy-1.5.7/lib

Agora para testar a instalação crie um arquivo chamado test.groovy e digite o seguinte código:
import static groosh.Groosh.groosh
import static org.codehaus.groovy.groosh.stream.DevNull.devnull

def gsh = new groosh.Groosh()
gsh.ls().toStdOut()

Para rodar o arquivo basta digitar no console: groovy test.groovy. Esse script irá listar todos os arquivos do diretório corrente usando o comando do linux ls.

Agora já temos toda a infra-estrutura para realizar backups com Groovy e Groosh de maneira fácil aproveitando o melhor do linux e do Groovy.

Que comandos posso usar com o Groosh?

Todos! basta fazer por exemplo new groosh.Groosh().SeuComandoLinux! Podemos usar o su, o ls, o grep, o tar, emfiem não existe limites. Podemos encadear vários comandos também.

Podemos listar os programas em execução:

import static groosh.Groosh.groosh
import static org.codehaus.groovy.groosh.stream.DevNull.devnull

def gsh = new groosh.Groosh()
gsh.ps().toStdOut()

Podemos fazer pipes e usar o grep do linux por exemplo também:
import static groosh.Groosh.groosh as shell
import static org.codehaus.groovy.groosh.stream.DevNull.devnull
import static org.codehaus.groovy.groosh.stream.StandardStreams.stdout

shell().ls("/usr/java/") | shell()._grep("gz") | stdout()

Veja que aqui o grep foi usado com um _grep isso se deve por que o Groovy já tem um comando grep e para não conflitar com o grep do linux usamos o underline.

Podemos fazer um script mais apurado como esse a baixo:
import static groosh.Groosh.groosh as shell
import static org.codehaus.groovy.groosh.stream.DevNull.devnull
import static org.codehaus.groovy.groosh.stream.StandardStreams.stdout

def g = shell().ls("/usr/java/") | shell()._grep("groovy")
def linhas = shell().each_line { l, w ->
w.write("Resultado: $l \n")
}

g.pipeTo(linhas)
linhas.toStdOut()

Esse scirpt faz um ls no diretório /usr/java e depois uma pesquisa com o grep por diretorios ou arquivos com o nome contendo a palavra groovy. Com o closure each_line do Groosh podemos customizar o processamento de cada linha do resultado de um pipe para outro.

No final o pipe do grep para o closure é executado e o resultado é mostrado no console.

Você pode compactar arquivos usando o tar do linux o script para fazer isso é muito simples:
import static groosh.Groosh.groosh as shell
import static org.codehaus.groovy.groosh.stream.DevNull.devnull
import static org.codehaus.groovy.groosh.stream.StandardStreams.stdout

shell().tar("-zcvf",new File("/home/pacheco/backup.tar.gz"),"/usr/java").toStdOut()

Agora você já possui o ambiente e o miniomo de conhecimento necessário para fazer seus script com shell e Groovy. Espero que tenha ajudo alguém :)

Popular posts from this blog

Telemetry and Microservices part2

Installing and Running ntop 2 on Amazon Linux OS

Fun with Apache Kafka