Instalação, configuração e uso do Bacula CAPA Backup profissional Stephen Gibson – www.sxc.hu Gravar arquivos de um local em outro é muito fácil, mas só o Bacula é capaz de fazer backups em escala industrial sem perder a praticidade necessária para os modernos administradores. por Gerd Müller A segurança de dados, de PDAs a grandes mainframes, incluindo versões futuras dos softwares e das mídias de armazenamento, é o objetivo do projeto de backups Bacula [1] desde o início. Desenvolvedor-líder do projeto desde 2000, Kern Sibbald optou pelo modelo do Código Aberto por acreditar ser essa a melhor forma de se obter um software seguro e competente na geração e recuperação de backups. Atualmente, o Bacula já é uma alternativa às custosas soluções proprietárias. Componentes O Bacula é composto por várias partes, sendo as mais importantes: Catálogo (banco de dados SQL) Linux Magazine #60 | Novembro de 2009 Director (bacula-dir) Armazenamento (bacula-sd) Arquivos (bacula-fd) Console Estes componentes permitem dividir o servidor em múltiplos “pedaços”, de forma a facilitar instalações distribuídas. À exceção do director e do catálogo, os demais componentes podem ser utilizados somente quando necessários. A comunicação entre as peças é feita por meio de portas definidas pelo IANA (figura 1), o que facilita a instalação do Bacula através de firewalls. Evidentemente, o software também permite a criptografia de todas as conexões usadas. Cada componente se autentica por meio de uma senha, conhecida pelos dois lados da autenticação. Memória do Bacula O catálogo é a memória principal do Bacula. Nele ficam os dados mais importantes para a operação do software, gerenciados por um banco de dados SQL. Atualmente, os bancos de dados suportados são MySQL, PostgreSQL e, para exigências pouco sofisticadas, SQLite. O back-end do Bacula é um de seus pontos fortes. Por isso, existem certos scripts livres para permitir seu monitoramento por soluções específicas. No caso do Nagios, o Bacula até já traz um script por padrão. Os scripts costumam ser usados para informar o sucesso do último backup. Com isso, o adminis45 CAPA | Bacula trador só precisa intervir na solução de backup quando for necessário. Centro de controle O director é o centro de controle do sistema de backup. Ele coordena os componentes, analisa os dados e os guarda no catálogo. Além disso, ele gerencia os backups de acordo com as configurações determinadas pelo administrador. Com relação à segurança, não há diferença entre o Bacula e as demais soluções proprietárias dos mais variados tamanhos. O Bacula é capaz de fazer backups das formas mais comuns: completo, diferencial e incremental. Um backup diferencial engloba todos os dados alterados desde o último backup completo. O backup incremental, por sua vez, grava somente os arquivos que tenham sido alterados após o último backup. Para garantir a confiabilidade dos backups, o Bacula sempre verifica se estão presentes o último backup completo e os incrementais posteriores a ele. Em caso negativo, o programa realiza automaticamente um backup incremental com base no último completo. O catálogo documenta as sequências de backups e os arquivos incluídos. É possível definir quais arquivos salvar por meio dos file sets e agendar as tarefas de backup no servidor. desde simples diretórios até discos rígidos inteiros, CDs, DVDs e fitas em grandes bibliotecas (incluindo leitores de código de barra), para os quais utiliza o projeto MTX [2]. O formato do backup é idêntico em todos os casos e – embora proprietário – é muito flexível e bem documentado. No Bacula, o tamanho dos backups não está limitado ao do volume onde ele se localiza. Da mesma Figura 1Funcionamento dos componentes do Bacula. Todos os componentes se forma, um mesmo volucomunicam com o director, o sistema me pode conter dados de é operado por meio do console e múltiplos backups. Com todas as tarefas de leitura e escrita isso, não é preciso acressão realizadas pelos daemons de centar novos volumes o arquivos e armazenamento. tempo todo, já que o programa permite aproveitar ao máximo o espaço disponível. Se um backup for apagado e deixar O daemon de arquivos (file-daemon) de ocupar um determinado es- é o agente usado pelo Bacula para paço, esse mesmo espaço poderá acessar os dados no sistema a ser lido. ser ocupado logo em seguida. Os Ele lê os dados do backup e grava-os volumes podem ser agrupados nos na mídia do servidor de backup. Ele chamados pools para permitir uma registra no director todas as tarefas de melhor organização dos backups e backup e restauração, assim como também a reserva de espaço, caso seus respectivos arquivos, volumes e necessário. Os pools associam vo- pools. O director, por sua vez, armalumes a tarefas de backup. zena essas informações no catálogo. Agentes Armazenamento O componente seguinte é o daemon de armazenamento. Ele fornece acesso do director aos meios (ou volumes) de armazenamento e se encarrega da gravação e da leitura dos dados no momento da restauração destes. Nas tarefas de backup, o daemon de armazenamento recebe os dados diretamente do daemon de arquivos e os repassa ao meio de armazenamento. Para gravar, o Bacula consegue utilizar várias mídias diferentes, 46 Figura 2Versão do console do Bacula para sistemas Windows. http://www.linuxmagazine.com.br Bacula | CAPA O daemon de arquivos troca os arquivos diretamente com o daemon de armazenamento. O Bacula suporta vários sistemas no papel de daemon de arquivos, como Unix (Linux, Solaris, FreeBSD, OpenBSD, Mac OS X, Tru64, Irix, AIX, BSDI, HPUX, NetBSD e outros) e também Windows (Windows 98, Me, XP, NT, 2000 e 2003). A restauração de dados de um sistema para outro diferente não é nenhum problema, pois cada uma das tarefas é realizada por um agente específico em cada máquina – e cada agente possui todas as permissões necessárias em seu sistema local. Evidentemente, também é possível gravar e ler compartilhamentos NFS e Samba. Vale a pena mencionar que o Bacula no Windows permite fazer backup de arquivos abertos e interage com os aplicativos para garantir cópias consistentes de bancos de dados. Para isso, o programa utiliza há tempos o serviço Microsoft Volume Shadow Copy Service (VSS), utilizando uma pequena parte do concorrente também livre Amanda. Porém, no Amanda essa função está apenas no planejamento. O Bacula ainda oferece a possibilidade de executar, em cada plataforma, algumas ações antes e após cada atividade de backup. Esse recurso é especialmente útil no caso de bancos de dados, que podem fazer um dump para o disco logo antes de o backup ser realizado, de forma a conservar efetivamente todo o conteúdo do banco. Console administrativo O último componente do Bacula – o console – é a interface do administrador. Se for desejável controlar manualmente o Bacula, o console administrativo é a ferramenta ideal. Além do Bconsole, baseado em shell, há também um console Linux Magazine #60 | Novembro de 2009 Figura 3O console gráfico do Bacula oferece as mesmas funções do console de texto. gráfico para Windows e Gnome (figuras 2 e 3). Sua principal diferença para o console gráfico é a organização dos menus. No entanto, todos os consoles oferecem as mesmas – e muito úteis – funções administrativas. O exemplo detalhado a seguir ilustra a instalação do Bacula com base numa configuração mínima com um único servidor que age como catálogo, director e daemon de armazenamento. Além disso, esse mesmo sistema é o alvo do backup, o que significa que é preciso ter ainda o daemon de arquivos. O catálogo utiliza o MySQL. Instalação A versão atual do Bacula está disponível no site do projeto [1]. Após descompactá-la, bastam os comandos tradicionais para instalar o servidor de backup: ./configure --with-mysql make make install Se um determinado servidor precisar apenas dos componentes para gravação ou restauração, o melhor é usar o comando ./configure--enable-client-only. Em seguida, é preciso preparar o catálogo (leia-se banco de dados) no servidor de backup. Há scripts específicos em /etc/bacula/ para realizar essa tarefa: ./create_bacula_database ./make_bacula_tables ./grant_bacula_privileges Com isso, a instalação já está terminada. Resta apenas criar o link simbólico dos scripts de inicialização bacula-ctl-dir (para o director), bacula-ctl-sd (daemon de arma- Listagem 1: Configuração do console 01 Director { 02 Name = dir-backup 03 DIRport = 9101 04 address = backup 05 Password = “d87Y2YQsX0PQLyDaUHTg5kVoWmk7io52” 06 } 47 CAPA | Bacula Listagem 2: Configurações do daemon de arquivos 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Director { Name = dir-backup Password = “suefheKt70tSOz29JUGwSxPZrVrH” } Director { Name = backup-mon Password = “iDD6sy05efsfNsNjZflTkedwMpdJ” Monitor = yes } FileDaemon { Name = backup-fd FDport = 9102 WorkingDirectory = /var/bacula/working Pid Directory = /var/run Maximum Concurrent Jobs = 20 } Messages { Name = Standard director = dir-backup = all, !skipped, !restored } Listagem 3: Configuração do daemon de armazenamento 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 48 Storage { Name = backup-sd SDPort = 9103 WorkingDirectory = “/var/bacula/working” Pid Directory = “/var/run” Maximum Concurrent Jobs = 20 } Director { Name = backup-dir Password = “zLsrudRETNgNMSmyE0ZcNvHgI8yW” } Director { Name = backup-mon Password = “KmAQ2EK0KEeE5j5gXLVLpVvyak/Z” Monitor = yes } Device { Name = FileStorage Media Type = File Archive Device = /tmp LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; } Messages { Name = Standard director = dir-backup- = all } zenamento) e bacula-ctl-fd (daemon de arquivos) de seu local atual (/etc/bacula/) para o local correto no seu sistema. O Bacula sempre instala o daemon de arquivos no próprio servidor de backup. Ele oferece não apenas para fazer backups nesse servidor, mas também para gravar o catálogo sempre que necessário. Terminada a instalação, podemos proceder aos arquivos de configuração. Configuração A configuração dos componentes é feita nos arquivos bacula-dir.conf, bacula-fd.conf, bacula-sd.conf e bconsole. Para o exemplo deste artigo, bastam as configurações padrão desses componentes, o que significa que não precisaremos alterar tais arquivos. O arquivo mais fácil de entender é o do console. Ele controla somente a comunicação com o director (listagem 1). O daemon de arquivos, o único que requer alterações no arquivo de configuração padrão (listagem 2), requer muita atenção no uso profissional. Além da comunicação com o director, é preciso definir quais mensagens de status devem ser transmitidas ao director. O caso do daemon de armazenamento é bastante diferente. Suas opções de configuração são semelhantes às do daemon de arquivos, mas ele dispõe de um script de instalação que resolve os problemas. No nosso exemplo, temos um dispositivo que é montado em /tmp/ (listagem 3) – isto serve para demonstração, mas não para uso em produção. O arquivo bacula-sd.conf contém diversos exemplos para outros casos, como unidades de DVD e fitas, bibliotecas e muito mais. A configuração do director (listagem 4) é um pouco mais complexa. Todos os componentes se encontram novamente aqui e contêm links para seus nomes. Além disso, ele contém http://www.linuxmagazine.com.br Bacula | CAPA as definições de tarefas de backup, agendamentos, conjuntos de arquivos e pools. Todos os componentes do Bacula já podem ser iniciados neste momento. Se a instalação e a configuração tiverem sido feitas corretamente, o administrador pode abrir o console com o comando bconsole. Nele, o comando status all oferece um panorama do status de todos os componentes. Se o teste tiver sido realizado com sucesso, já será possível realizar o primeiro backup. Primeiro backup Para iniciar o primeiro backup, basta usar o comando run no console administrativo, selecionando em seguida o servidor a ser lido para fazer o backup. No nosso exemplo, trata-se da máquina cliente1. Nesse momento, o console exibe as configurações dessa tarefa de backup e pergunta se pode mesmo ser executado imediatamente. Após a resposta yes, ele inicia o backup e o console mostra uma mensagem informando que há novas mensagens. Para ler as mensagens, é possível escolher o método automático (autodisplay on) ou o manual (messages). Ao final do backup, o Bacula emite um relatório com todos os detalhes mais importantes da tarefa que acabou de executar. Restauração A restauração do backup é igualmente fácil e pode ser iniciada com o comando restore no console administrativo. Em seguida, é possível selecionar quais dados restaurar. No momento, são oferecidas onze opções, começando pelos arquivos mais recentemente gravados e terminando com a possibilidade de selecionar os dados a restaurar por meio de comandos SQL no catálogo. Após escolher um método, basta marcar os arquivos desejados e informar o destino dos dados restaurados, além Linux Magazine #60 | Novembro de 2009 Listagem 4: Configuração do director 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 Director { Name = dir-backup DIRport = 9101 QueryFile = “/etc/bacula/query.sql” WorkingDirectory = “/var/bacula/working” PidDirectory = “/var/run” Maximum Concurrent Jobs = 1 Password = “4V60qoOSZgEBrirJBNAXbUUmAcM8” Messages = Daemon } JobDefs { Name = “DefaultJob” Type = Backup Level = Incremental Client = backup-fd FileSet = “Full Set” Schedule = “WeeklyCycle” Storage = File Messages = Standard Pool = Default Priority = 10 } Job { Name = “Client1” JobDefs = “DefaultJob” Write Bootstrap = “/var/bacula/working/Client1.bsr” } Job { Name = “BackupCatalog” JobDefs = “DefaultJob” Level = Full FileSet=”Catalog” Schedule = “WeeklyCycleAfterBackup” RunBeforeJob = “/etc/bacula/make_catalog_backup bacula bacula” RunAfterJob = “/etc/bacula/delete_catalog_backup” Write Bootstrap = “/var/bacula/working/BackupCatalog.bsr” Priority = 11 } Job { Name = “RestoreFiles” Type = Restore Client=backup-fd FileSet=”Full Set” Storage = File Pool = Default Messages = Standard Where = /tmp/bacula-restores } FileSet { Name = “Full Set” Include { Options { signature = MD5 } File = /usr/local/src/bacula-2.0.3 } Exclude { File = /proc File = /tmp 49 CAPA | Bacula Listagem 4 (continuação) 63 File = /.journal 64 File = /.fsck 65 } 66 } 067 068 Schedule { 069 Name = “Semanal” 070 Run = Full 1st sun at 23:05 071 Run = Differential 2nd-5th sun at 23:05 072 Run = Incremental mon-sat at 23:05 073 } 074 075 Schedule { 076 Name = “SemanalAposBackup” 077 Run = Full sun-sat at 23:10 078 } 079 080 FileSet { 081 Name = “Catalogo” 082 Include { 083 Options { signature = MD5 } 084 File = /var/bacula/working/bacula.sql 085 } 086 } 087 088 Client { 089 Name = backup-fd 090 Address = backup 091 FDPort = 9102 092 Catalog = MyCatalog 093 Password = “w4Usp8cV18pitA56WhtUHYSbNat83NgvesmiH” 094 File Retention = 30 days 095 Job Retention = 6 months 096 AutoPrune = yes 097 } 098 099 Storage { 100 Name = Arquivo 101 Address = backup 102 SDPort = 9103 103 Password = “0KaQ38vP8E8R2jKERde1BIZH5p27jimk62MXl1kZ” 104 Device = FileStorage 105 Media Type = File 106 } 107 108 Catalog { 109 Name = MeuCatalogo 110 dbname = bacula; user = bacula; password = “” 111 } 112 113 Pool { 114 Name = Default 115 Pool Type = Backup 116 Recycle = yes # O Bacula consegue reciclar volumes automaticamente 117 AutoPrune = yes # Remover volumes expirados 118 Volume Retention = 365 days # Um ano 119 } 120 121 Console { 122 #... 123 } 50 de confirmar se é desejável sobrescrever os arquivos que já estiverem presentes no destino. Esta tarefa também gera um relatório. O exemplo utilizado neste artigo explora somente uma pequena parcela das inúmeras possibilidades oferecidas pelo Bacula. Embora ele demonstre o backup de apenas um diretório, o procedimento é praticamente o mesmo para gravar os backups em fitas, por exemplo. As tarefas importantes, como o rótulo da fita, são resolvidas de forma automática pelo Bacula por meio dos parâmetros já fornecidos, ou então informadas pelo administrador de forma manual. Conclusões Este exemplo mostra que o Bacula é uma solução completa de backup que não deixa a desejar em comparação com as soluções proprietárias. Além de gratuito, oferece o poder do Software Livre. Não é preciso temer o uso do Bacula. Com a documentação exemplarmente bem detalhada – mesmo em comparação com outros projetos livres –, praticamente não restam dúvidas para o administrador. É fácil perceber que o líder do projeto Kern Sibbald lhe dedicou muito tempo. n Mais informações [1]Bacula: http://www.bacula.org [2]Compatibilidade com o MTX: http://mtx.opensource-sw. net/compatibility.php Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em [email protected] Este artigo no nosso site: http://lnm.com.br/article/3101 http://www.linuxmagazine.com.br