:::: MENU ::::

quarta-feira, 15 de junho de 2011

Nesse post, será mostrado como instalar o Bacula utilizando o banco de dados MySQL

Obtendo o bacula

No endereço http://www.bacula.org/en/?page=downloads vocês encontrarão várias versões do Bacula para download: tarballs, rpms, debpkgs, win32_64. Nesse tutorial, vamos fazer no método Warrior's Mode: Compilando \o/

wget http://ufpr.dl.sourceforge.net/project/bacula/bacula/5.0.3/bacula-5.0.3.tar.gz
tar xvf bacula-5.0.3.tar.gz
cd bacula-5.0.3
 

Compilando

Para a compilação, primeiro devemos satisfazer as dependências do Bacula:
zypper in gcc gcc-c++ libopenssl-devel mysql-community-server libmysqld-devel make
Se quiserem instalar com o BAT (Bacula Administration Tool), adicionem o libqt4-devel.


Caso você queira compilar para um outro sistema operacional, procure por pacotes similares. O que no openSUSE costumamos usar o -devel como sufixo na nomenclatura, em algumas distros utiliza-se o lib* como prefixo.

Enfim, continuando...

Com as dependências instaladas, utilizaremos alguns parâmetros na compilação. Eu costumo colocar-los em um arquivo .sh, acho que fica bem melhor do que fazer aquele catatau de parâmetros em uma linha. Fica uma merda pra gerenciar, porém quando colocamos em uma arquivo, ai a coisa muda! Um exemplo:


#!/bin/bash
# Parametros para compilacao do Bacula
# 14-06-2011

CFLAGS="-g -O2 -Wall" \
./configure \
--enable-smartalloc \
--with-mysql \
--with-dump-email=meu@email.com \
--with-job-email=me u@email.com \
--with-smtp-host=localhost \
--with-openssl \
--with-fd-password=VouNao \
--with-sd-password=QueroNao \
--with-dir-password=PossoNao

O que estamos definindo aqui:
--with-mysql = Usaremos o MySQL como database. O pacote libmysqld-devel é pré-requisito;
--with-openssl = Permite que seja utilizado TLS na comunicação entre o cliente-servidor
--with-fd-password = Senha do File daemon
--with-sd-password = Senha do Storage Daemon
--with-dir-password = Senha do Director Daemon
Eu estou definindo a senha logo aqui porque não gosto das senhas geradas automaticamente. Fico completamente azuado com aquela porrada de caracteres...

Se o seu Bacula for instalado em uma máquina com interface gráfica, instale o pacote devel do QT(libqt4-devel) e adicione o parâmetro --with-bat ao configure. Como isso geralmente não é trivial, não usaremos.
Depois da execução do ./configure, teremos a resposta do bacula:

Configuration on Tue Jun 14 11:44:49 BRT 2011:


Host: i686-pc-linux-gnu -- suse 11.4
Bacula version: Bacula 5.0.3 (04 August 2010)
Source code location: .
Install binaries: /sbin
Install libraries: /usr/lib
Install config files: /etc/bacula
Scripts directory: /etc/bacula
Archive directory: /tmp
Working directory: /var/bacula/working
PID directory: /var/run
Subsys directory: /var/lock/subsys
Man directory: ${datarootdir}/man
Data directory: /usr/share
Plugin directory: /usr/lib
C Compiler: gcc Linux)
C++ Compiler: /usr/bin/g++ Linux)
Compiler flags: -g -O2 -Wall -fno-strict-aliasing -fno-exceptions -fno-rtti
Linker flags:
Libraries: -lpthread -ldl
Statically Linked Tools: no
Statically Linked FD: no
Statically Linked SD: no
Statically Linked DIR: no
Statically Linked CONS: no
Database type: MySQL
Database port:
Database lib: -L/usr/lib -lmysqlclient_r -lz
Database name: bacula
Database user: bacula


Job Output Email: meu@email.com
Traceback Email: meu@email.com
SMTP Host Address: localhost


Director Port: 9101
File daemon Port: 9102
Storage daemon Port: 9103


Director User:
Director Group:
Storage Daemon User:
Storage DaemonGroup:
File Daemon User:
File Daemon Group:


SQL binaries Directory /usr/bin


Large file support: yes
Bacula conio support: no
readline support: no
TCP Wrappers support: no
TLS support: yes
Encryption support: yes
ZLIB support: yes
enable-smartalloc: yes
enable-lockmgr: no
bat support: no
enable-gnome: no
enable-bwx-console: no
enable-tray-monitor: no
client-only: no
build-dird: yes
build-stored: yes
Plugin support: yes
AFS support: no
ACL support: no
XATTR support: yes
Python support: no
Batch insert enabled: no

Verifique e veja se é isso mesmo que você quer. Caso algo esteja incorreto, altere o parâmetro e execute novamente o ./configure. Depois de tudo estar nos trinks, é hora do make && make install :D

make && make install
(Compila compila Compila compila Compila compila Compila compila...)

Enquanto ele compila, você pode ir assistir um videozin e talz... Ah, falando nisso, pra quem curte Dragon Ball Z, o pessoal do Gastação TV estão fazendo a tradução do DBZ Abridged! Saca o primeiro episódio:





SHHHOOOOWWWWWW!!!

Enfim, voltando :D

Após o make install, todos os arquivos estarão nos seus devidos lugares e prontos para rodarmos os scripts para criação de base de dados, tabelas e permissões na tabela. Então, já que vamos utilizar o banco de dados, que tal inciarmos o MySQL?
service mysql start

E seria bom também adicionar-lo na inicialização:
chkconfig mysql on
Após o banco subir, vamos aos scripts. São 3:
/etc/bacula/create_bacula_database
/etc/bacula/make_bacula_tables
/etc/bacula/grant_bacula_privileges

Após rodar os scripts, inicie o Bacula
bacula start

E  faça um simples teste:
bconsole

Caso apareça algo do tipo

Connecting to Director linux-sn99:9101
1000 OK: linux-sn99-dir Version: 5.0.3 (04 August 2010)
Enter a period to cancel a command.
*

Congratulations!!! Seu Bacula está pronto para ser configurado!!!

IF NO....
Caso ele não conecte e fique apenas tentando conexão, é porque sua configuração com o MySQL ainda está pendente. Verifique o arquivo /etc/bacula/bacula-dir.conf, procure pela linha do Catalog.

Se você definiu uma senha para o usuário do bacula, será necessário informar aqui também.:

Catalog {
Name = MyCatalog
dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport = 3306
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}

Sempre é bom verificar também o arquivo de log. Ele fica integrado ao /var/log/messages
Não esqueça de ver as portas. O comando netstat -napt poderá te ajudar.

Até a prox!

segunda-feira, 13 de junho de 2011

Ah! Agora sim podemos gravar nossos arquivos usando apenas simples comandos \o/
Depois de ler o post anterior (http://rauhmaru.blogspot.com/2011/06/como-configurar-o-seu-autochanger.html), provavelmente já estão com todos os dispositivos configurados e com a fita no ponto, prontinha pra mandar gravar seus 400GB de backup e esperar por mais ou menos umas 4 horas até a finalização do job. É, demora pra caralho...


Nesse post, será mostrado como gravar, fazer restore, listar e obter informações das fitas

Enfim, aos prometidos comandos:


Rebobinar o drive de fita:
mt -f /dev/st0 rewind

Backup do diretório /etc e /home com o comando tar
tar cjfv /dev/st0 /etc /home

Lembram das opções do tar?

  • c = create
  • j = compressão bzip
  • f = force
  • v = verbose

Dica do modafoca

Quando utilizamos o comando tar para fitas, lembre de uma coisa simples: Ao invés de passarmos o nome do arquivo a ser criado, por exemplo, backup.tar.gz, devemos apontar para o dispositivo de fita. Coloquem isso na cabeça :)

Encontre em qual bloco você está com o comando mt:
mt -f /dev/st0 tell

Mostre os arquivos gravados na fita. Duas maneiras:
A) tar tzf /dev/st0
B) tar tvf /dev/st0

Restaure o diretório /home, gravado na fita:
cd /
mt -f /dev/st0 rewind
tar xvf /dev/st0 /home

Descarregue a fita do drive
mt -f /dev/st0 offline

Exiba informações sobre seu drive de fita - Duas maneiras:
A) tapeinfo -f /dev/st0
B) mt -f /dev/st0 status

Você pode voltar ou avançar na fita com o próprio comando mt:
A) Ir para o final da última gravação:
mt -f /dev/st0 eod

B) Ir para a gravação anterior:
mt -f /dev/st0 bsfm 1

C) Avançar na gravação:
mt -f /dev/st0 fsf 1



Exemplo de Backup em fita

Para realizar um backup em múltiplas fitas, use o seguinte comando(backup do sistema de arquivos /home). Caso for utilizar somente uma fita, não insira o parâmetro M.
tar -cpMzvf /dev/st0 /home

Mais opções do tar? Sim!

  • p = preserve as permissões
  • M = Crie/liste/extraia arquivos multi-volume(multiplas fitas)
  • z = Compressão usando o gzip

O resto vocês já conhecem :)


Para comparar a fita de backup, execute:
tar dpMzvf /dev/st0 /home

E finalizando, para o restore...
tar xpMvf /dev/st0 /home

Caso precisem de mais ajuda, a manpage do tar é bastante útil. Ela também trata sobre backup em fitas. Vale a pena dar uma olhada.

domingo, 12 de junho de 2011


Mais um post preparatório para o Bacula :D


Pergunta simples: Como faço backup em fita no Linux?
Quando alguém faz uma pergunta, duas coisas vem na minha mente:


  • Ela não tem nenhuma ferramenta profissional configurada
    • Eu não quero configurar porra nenhuma, eu só quero gravar! ONLY THIS!!!
  • Ela quer fazer isso o mais breve possível
    • Comandos! Preciso de comandos!!!


Então... Depois de você identificar seu dispositivo de fita(caso tenha dúvidas, consulte o post anterior (http://rauhmaru.blogspot.com/2011/06/convencao-de-nome-de-tape-drives-no.html), é hora de "meter mão" :D


Nesse post será mostrado como configurar o seu autochanger.

O marco zero é fazer o hardware funcionar. Para fazer funcionar, você tem de conhecer.





O'RLY?
YA! RLY!
NO WAI!
YA! WAI!
I SEE!

OH! RLY?












Autochangers

Dell PowerVault 124T


Se você possui um autochanger (um dispositivo capaz de mover as fitas (sim, as fitas! Ele possui uma biblioteca para armazenamento de fitas dentro do próprio equipamento), você precisará primeiramente fazer o dispositivo de movimentação de fitas funcionar. O método fácil de fazer a identificação desse dispositivo é usando o comando lsscsi.
Vamos a um exemplo. O meu autochanger é um Dell PowerVault 124T. O output a seguir é do comando lsscsi:


[0:2:0:0]    disk    DELL     PERC H700        2.10  /dev/sda 
[1:0:0:0]    cd/dvd  TEAC     DVD-ROM DV-28SW  R.2A  /dev/sr0 
[3:0:0:0]    tape    IBM      ULTRIUM-HH3      93G7  /dev/st0 
[3:0:0:1]    mediumx DELL     PV-124T          0080  /dev/sch0
[6:0:0:0]    disk    Hitachi  HDS721010CLA332        /dev/sdb 



A linha verde mostra um disco rígido SATA;
A linha azul mostra um drive de DVD;
A linha laranja mostra o drive de fita, tipo auto rewind;
A linha vermelha é o nosso alvo. É o library. O dispositivo é o /dev/sch0.
A linha roxa é um disco SATA, externo

O Bacula tem como pré-requisito a configuração do comando mtx. Caso você não o configure, eis o erro que você tomará na cara assim que invocar o mtx:

belldandy:~ # mtx status

mtx: Request Sense: Long Report=yes
mtx: Request Sense: Valid Residual=no
mtx: Request Sense: Error Code=70 (Current)
mtx: Request Sense: Sense Key=Illegal Request
mtx: Request Sense: FileMark=no
mtx: Request Sense: EOM=no
mtx: Request Sense: ILI=no
mtx: Request Sense: Additional Sense Code = 49
mtx: Request Sense: Additional Sense Qualifier = 00
mtx: Request Sense: BPV=no
mtx: Request Sense: Error in CDB=no
mtx: Request Sense: SKSV=no
Mode sense (0x1A) for Page 0x1D failed
mtx: Request Sense: Long Report=yes
mtx: Request Sense: Valid Residual=no
mtx: Request Sense: Error Code=70 (Current)
mtx: Request Sense: Sense Key=Hardware Error
mtx: Request Sense: FileMark=no
mtx: Request Sense: EOM=no
mtx: Request Sense: ILI=no
mtx: Request Sense: Additional Sense Code = 44
mtx: Request Sense: Additional Sense Qualifier = 00
mtx: Request Sense: BPV=no
mtx: Request Sense: Error in CDB=no
mtx: Request Sense: SKSV=no
READ ELEMENT STATUS Command Failed 

Se esse é o seu output, zivudel manel :D Configure sua porra pra facilitar sua vida. O mtx requer que o seu dispositivo do changer esteja apontando para o dispositivo virtual /dev/changer. Esse procedimento é simples de se fazer, você precisa apenas usar o comando ln para criar o link do (no meu caso) /dev/sch0 para o /dev/changer:
ln -s /dev/sch0 /dev/changer
Após isso, vejamos a saída do mesmo comando:

Belldandy:~ # mtx status
  Storage Changer /dev/changer:1 Drives, 8 Slots ( 0 Import/Export )
Data Transfer Element 0:Full (Storage Element 6 Loaded):VolumeTag = 000011L3                        
      Storage Element 1:Full :VolumeTag=000010L3                        
      Storage Element 2:Full :VolumeTag=000002L3                        
      Storage Element 3:Full :VolumeTag=000003L3                        
      Storage Element 4:Full :VolumeTag=000004L3                        
      Storage Element 5:Full :VolumeTag=000005L3                        
      Storage Element 6:Empty
      Storage Element 7:Empty
      Storage Element 8:Full :VolumeTag=000001L3

O PV-124T possui 1 driver e 8 slots, com possibilidade de expansão. Nesse exemplo, temos uma fita no seu drive (slot 0) e 6 nos outros slots. Os slots 6 e 7 estão vazios (Douh!).


Após essa configuração e teste, vejamos agora como ficou o lsscsi. Vamos mostrar o output full, com o comando lsscsi -g:



[0:2:0:0]    disk    DELL     PERC H700        2.10  /dev/sda   /dev/sg1
[1:0:0:0]    cd/dvd  TEAC     DVD-ROM DV-28SW  R.2A  /dev/sr0   /dev/sg2
[3:0:0:0]    tape    IBM      ULTRIUM-HH3      93G7  /dev/st0   /dev/sg3
[3:0:0:1]    mediumx DELL     PV-124T          0080  /dev/sch0  /dev/changer
[6:0:0:0]    disk    Hitachi  HDS721010CLA332        /dev/sdb   /dev/sg0

A partir daqui, você já poderá configurar seu Bacula tranquilamente ou até mesmo fazer backups manualmente, que é o tema do nosso próximo post.

ps: Na verdade, esse post seria demonstrando como fazer o backup na mão, utilizando o tar e o mt, mas depois lembrei que em hardwares autochangers precisam estar configurados corretamente. Se eles não estiverem, nem um passo é dado. É uma merda! :P

Até :D
Fonte: NixCraft
Esse post tem como objetivo preparar-lo para implementação do Bacula, que será mostrado em breve :)

O Linux suporta SCSI, IDE e antigos floppy baseados para dispositivos de fita. cada dispositivo possui um nome como unidades de disco rígido. Digital Data storage(DDS), Digital Audio Tape(DAT) e Digital Linear Tape(DLT), todos são suportados pelo Linux e amplamente utilizados no dia-a-dia para fins de backup.

Nomes de dispositivos de fita SCSI

O drive ht provê interface para uma variedade de dispositivos de fita SCSI no Linux. A identificação do tipo de dispositivo é bastante simples:

  • Primeiro (auto rewind) dispositivo de fita: /dev/st0
  • Segundo (auto rewind) dispositivo de fita: /dev/st1
  • Primeiro non-rewind dispositivo de fita: /dev/nst0
  • Segundo non-rewind dispositivo de fita: /dev/nst1
Atualmente os dispositivos SCSI são os mais comuns. Vale lembrar que dispositivos SATA são bem parecidos com o SCSI. Se você pretende fazer um backup em fita utilizando o comando tar, provavelmente terá de apontar para o /dev/st0.

Nomes de dispositivos de fita IDE

O drive ht provê interface para uma variedade de dispositivos de tia no Linux. Assim como o SCSI, a identificação também é simples:

  • Primeiro (auto rewind) dispositivo de fita: /dev/ht0
  • Segundo (auto rewind) dispositivo de fita: /dev/ht1
  • Primeiro non-rewind dispositivo de fita: /dev/nht0
  • Segundo non-rewind dispositivo de fita: /dev/nht1


Dúvidas? Leiam a manpage do st :)

sábado, 11 de junho de 2011



"Tô eu aqui" futucando os arquivos do Bacula, quando me deparo com um tal de bacula.vim dentro do diretório scripts. Olhei com atenção e vi que era um arquivo de configuração de sintaxe feito especificamente para o Bacula! Show de bola :D


O procedimento que faremos aqui serve para qualquer outro .vim personalizados.
Lembre-se: $HOME é Variável de ambiente que referencia seu diretório home



1. Crie o diretório que irá armazenar seu bacula.vim:
mkdir -p $HOME/.vim/syntax

2. Insira o arquivo bacula.vim para dentro do $HOME/.vim/syntax:
Você poderá encontrar o arquivo bacula.vim dentro do tarball do Bacula. Por exemplo:
tar xvf bacula-5.0.3.tar.gz
cd bacula-5.0.3/scripts
cp bacula.vim ~/.vim/syntax/

3. Usando o vim (lógico!) abra um arquivo de configuração do Bacula, por exemplo, o bacula-dir.conf, bacula-fd.conf ou o bacula-sd.conf, carregue a sintaxe:
:set syntax bacula

A partir desse momento a sintaxe do Bacula está diferenciada :)

OBS: Caso queira que essa sintaxe esteja disponível para todos os usuários, coloque o arquivo de sintaxe dentro do diretório /usr/share/vim/current/syntax/



Mais Dúvidas com sintaxe no vim? RTFM! :)
http://vimdoc.sourceforge.net/htmldoc/syntax.html

Posts populares