Backup

Documentações relativas a procedimentos de backup e restauração.

Backup do pfSense

Introdução 

Este documento destina-se a demonstração dos procedimentos de implementaçao do backup das configurações de um servidor pfSense. A efetivação destes procedimentos permite rápida restauração de um servidor pfSense com problemas ou implantação de um servidor baseado nas configurações de um anterior.

esquema_Backup_gateway_SUAP.png

O backup é realizado conforme a figura acima. Este método de backup é utilizado quando não é possível instalar um cliente diretamente no host que sofrerá o backup dos dados. Neste caso, um host intermediário (Backup-gateway), este com capacidade de sofrer backup dos dados, realiza a cópia do pfSense para o seu disco local. Em seguida, de acordo com o agendamento, o servidor de backup realiza o backup dos dados copiados no host intermediário.

Este método é baseado em uma ferramenta open source que realiza a cópia dos dados do pfSense de forma otimizada via comunicação HTTPS. A ferramenta conecta-se ao pfSense com as credenciais e em seguida realiza o download das configurações do pfSense. 

Backup do pfSense

A máquina Backup-gateway tem um S.O do tipo centOs versão 7.3.1611. A partir desta máquina e com um usuário com permissões de administrador:

$ sudo yum check-updates
$ sudo yum install epel-release
$ sudo yum install python-pip
$ sudo pip install BeautifulSoup4

Agora realize o download do código python a ser utilizado. Coloque este código em /root, por exemplo.:

 $ sudo wget -c https://raw.githubusercontent.com/edgauthier/pfsense-backup/master/pfsense-backup.py
 $ sudo cp pfsense-backup.py /root/pfsense-backup.py

A utilização do código é da seguinte forma:

Usage: pfsense-backup.py OPTIONS

OPTIONS:

    -h | --help

    -s <server url> | --server <server url>
        The base URL for the pfSense installation.
        Example: https://pfsense.example.com
        
    -t <seconds> | --timeout <seconds>
        Timeout for network requests.

    -u <username> | --username <username>
    
    -p <password> | --password <password>

    -d | --directory <directory>
        Defaults to current directory.

    -r | --rrd
        Includes RRD data with the backup.

    -f | --file <file>
        Defaults to 'pfsense-backup.xml'

Um exemplo de uso é o seguinte::

$ ./pfsense-backup.py -s https://172.20.254.100:443 -t 5 -u admin -p senha123 -r -f arquivo_backup_pfSense.xml

Para uso em rotinas, fica a sugestão do seguinte script:

#!/bin/bash

data=$(/bin/date +%Y-%m-%d)
hora=$(/bin/date +%X)

DIR=/backup/pfsense/

host1="PFsense"
user1=admin
passwd1=senha123
server1=172.20.254.100
FILE1=backup_"$host1"-$data.xml

method=https
port=443
timeout=5

logFile=/var/log/backup-pfSense.log

# Funcao
writeLog(){
   echo -e "$data $hora - $1\n" >> $logFile
}

backup(){
/root/pfsense-backup.py -s $method://$1:$port -t $timeout -u $2 -p "$3" -r -f "$4"
}

check(){
if [ -e $1 ]; then
        writeLog "Cópia de $2 realizada com sucesso!"
else
        writeLog "Cópia de $2 não realizada, verificar log."
fi
}

writeLog "Iniciando rotina de cópia dos dados"

mkdir -p $DIR
cd $DIR

backup $server1 $user1 $passwd1 $FILE1
writeLog "Realizando a cópia remota dos dados do host: $host1"
check $FILE1 $host1

writeLog "Encerrando rotina..."

 Referências

https://github.com/edgauthier/pfsense-backup

Backup do Samba 4

Introdução

Este documento visa a orientação para a configuração de backup dos dados de configurações do Samba4. Porém, não é uma solução para backup dos arquivos dos usuários, servidor de arquivos e etc. A efetivação destes procedimentos permite rápida restauração de um servidor samba com problemas ou implantação de um servidor novo baseado nas configurações restauradas de um anterior.

São utilizados scripts para a realização do backup e baseados em documentação oficial. A versão do samba que funciona corretamente com estes scripts é o Samba v4.0-v4.8. Para versões acima, existe outra abordagem oficial. Estes scripts podem funcionar no próprio host do samba que deve possuir um cliente de backup. Caso não seja possível instalar o cliente de backup, o script pode funcionar normalmente, mas após a geração dos arquivos de saída, estes devem ser enviados a um host intermediário que sofrerá o backup por meio de um cliente válido. Este segundo esquema pode ser representado pela seguinte figura:

esquema_Backup_gateway_SUAP.png

Host seria o servidor samba4. O backup-gateway é o host intermediário que recebe os dados gerados pelo script de backup do samba e possui um cliente de backup válido. O servidor de backup é o Bacula, Bareos ou outro servidor desejado.

Backup do samba4

Preparação

Primeiro, tenha um usuário com permissões de administrador e crie um diretório no qual serão armazenados os arquivos gerados para backup. No caso, será utilizado o diretório /root/backup/samba.

$ sudo mkdir /root/backup/samba -p

Realize o download do tarball do samba contendo o script de backup fornecido pelos desenvolvedores. 

$ cd /usr/src 
$ sudo wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz
$ sudo tar -xvzf samba-latest.tar.gz

Encontre o script em questão:

$ find / -iname samba_backup

Deverá aparecer uma saída apontando esta localização. Onde "x.x" é a especificação da versão do samba no seu cenário:

/usr/src/samba-4.x.x/source4/scripting/bin/samba_backup

Copiar para um local adequado, exemplo: /root/scripts/:

$ sudo cp /usr/src/samba-4.8.4/source4/scripting/bin/samba_backup /root/scripts/

A partir daqui preste bastante atenção. Será necessário alterar variáveis no script original e posteriormente inserir um trecho de código se for o seu caso. Caso seu samba4 seja compilado, realize da seguinte maneira:

$ sudo nano /root/scripts/samba_backup

DIRS="private etc sysvol"
FROMWHERE=/usr/local/samba
WHERE=/root/backup/samba

Caso o seu samba4 seja instalado via pacotes de repositórios:

$ sydi nano /root/scripts/samba_backup

DIRS="private /etc/samba sysvol"
FROMWHERE=/var/lib/samba
WHERE=/root/backup/samba

Agora insira (cole) o seguinte trecho de código na linha 85 se o seu samba4 foi instalado via repositório de pacotes:

elif  [ "$d" = "/etc/samba" ]; then
		# Run the backup.
		#    --warning=no-file-ignored set to suppress "socket ignored" messages.
		tar cjf ${WHERE}/${n}.${WHEN}.tar.bz2  $d --warning=no-file-ignored
		Status=$?       # Preserve $? for message, since [ alters it.
		if [ $Status -ne 0 ]; then
				echo "Error while archiving ${WHERE}/${n}.${WHEN}.tar.bz2 - status = $Status"
				exit 1
		fi

Este código é necessário pois sem ele uma parte dos arquivos não seria copiada.

 Ajuste permissões:

$ sudo chmod 750 /root/backup/samba/
$ sudo chown root:root /root/scripts/samba_backup

Execução

Antes de rodar o script é NECESSÁRIO parar o serviço do samba. Então, faça da seguinte maneira:

$ sudo service samba stop
$ /root/scripts/samba_backup 2>/dev/null

Os arquivos ficarão em /root/backup/samba/:

$ ls root/backup/samba/
_etc_samba.2018-08-20.tar.bz2 
samba4_private.2018-08-20.tar.bz2 
sysvol.2018-08-20.tar.bz2

Rotina de backup

Sugere-se a adição deste script à rotina do host para uma execução periódica. Porém, é importante alterar o script para que seja possível parar o samba antes de executar o script! Pode ser inserido tal código ao script:

# PARAR SAMBA, INÍCIO DO SCRIPT:
/etc/init.d/samba stop

......

# INICIAR SAMBA APÓS TODA A EXECUÇÃO DO SCRIPT, NAS ULTIMAS LINHAS:
# START SAMBA
/etc/init.d/samba start

Restaurando os arquivos

Por se tratar de procedimento complexo em que o sucesso depende muito das variáveis envolvidas no ambiente, não é possível garantir o sucesso dos métodos de restauração à seguir para qualquer caso. Assim, o administrador deve realizar os devidos ajustes para conseguir ter sucesso na operação.

 Observações importantes:

Pare o samba!

$ sudo /etc/init.d/samba stop

Remova os diretórios anteriores caso samba4 seja compilado:

$ sudo rm -rf /usr/local/samba/etc
$ sudo rm -rf /usr/local/samba/private
$ sudo rm -rf /usr/local/samba/var/locks/sysvol

Apague os diretórios anteriores caso samba4 seja instalado via repositório de pacotes:

$ sudo rm -rf /etc/samba/
$ sudo rm -rf /var/lib/samba/sysvol/
$ sudo rm -rf /var/lib/samba/private/

O arquivo compactado por vezes vai gerar uma estrutura de diretórios partindo da raiz "/", assim, ao copiar do backup para a pasta real, copie somente a parte do caminho que resta. Por exemplo, no caso de /etc/samba/ copie o diretório, dentro do arquivo compactado relativo ao etc, a partir do que estiver dentro de "samba", ou seja:

samba_backup_etc_conteudo.JPG

Estes arquivos devem ser copiados para /etc/samba/.

Assim, copie para os caminhos reais os conteúdos dos arquivos do "etc" (_etc_samba.Timestamp.tar.bz2), "private"(samba4_private.Timestamp.tar.bz2) e "sysvol"(sysvol.Timestamp.tar.bz2). Os caminhos reais, como apontado anteriormente, dependem da instalação do seu samba, se compilada ou não. Timestamp é um data no formato AAAA-MM-DD, Ex: 2018-08-24.

Supondo que esteja no diretório que contém os três arquivos do backup:

$ sudo tar -jxf etc.{Timestamp}.tar.bz2 -C /CAMINHO/COMPILADO/OU/NÃO
$ sudo tar -jxf samba4_private.{Timestamp}.tar.bz2 -C /CAMINHO/COMPILADO/OU/NÃO
$ sudo tar -jxf sysvol.{Timestamp}.tar.bz2 -C /CAMINHO/COMPILADO/OU/NÃO

Renomeie os arquivos *.ldp.bak para *.ldb:

$ find /LOCAL/DO/PRIVATE -type f -name '*.ldb.bak' -print0 | while read -d $'\0' f ; do mv "$f" "${f%.bak}" ; done

Se o backup não contém ACLs extendidas, execute:

$ sudo samba-tool ntacl sysvolreset

 Se você utiliza o samba como backend DNS, execute o comando à seguir para consertar os hardlinks das bases DNS:

$ sudo samba_upgradedns --dns-backend=BIND9_DLZ

Então pode reiniciar o serviço do samba e realizar os devidos ajustes.

$ sudo /etc/init.d/samba start

Referências

https://wiki.samba.org/index.php/Using_the_samba_backup_script

https://wiki.samba.org/index.php/Back_up_and_Restoring_a_Samba_AD_DC

Solução de backup: Bareos

Introdução 

bareos-full-logo.png

Este documento destina-se a demonstração dos procedimentos de instalação e configuração básica da solução de backup Bareos. Tal solução permite a realização de trabalhos de backup e restauração de dados. São suportadas máquinas clientes Linux e Windows.

As máquinas servidoras suportadas são do tipo Linux Debian, RedHat e Suse, porém, NESTE MANUAL será apresentada a instalação em sistemas CentOs na versão >=7. A versão contemplada do Bareos é a 17.2.

O Bareos é dividido em três componentes principais: o Director, o Console, o Storage Daemon e o File Daemon. O Director é o componente central, atuando como controlador que contata clientes e salva dados de backups nos armazenamentos. O Console é um componente utilizado para acessar configurações, verificar status e fazer alterações nos parâmetros do servidor via linha de comando. O Storage Daemon é o armazenamento dos dados de backup e é independente do Director pois nem sempre o mesmo servidor que controla é o mesmo que armazena os backups diretamente. E finalmente, o File Daemon é o componente cliente, aquele que recebe conexões do Director e provê a este os arquivos de backup referente aos conjuntos de arquivos configurados. Abaixo uma ilustração de como se dá a comunicação entre os componentes:

0cbc9d2c54974088996df70580f2a26a.jpg

É possível notar que alguns nomes e senhas devem ser as mesmas em diferentes componentes do sistema de backup. Isto ocorre pois, o mesmo atributo tem parâmetros diferentes à depender do contexto. Por exemplo, o atributo Director, no contexto do Director, tem a função de definir as principais configurações neste componente. Já no cliente, o atributo Director informa qual é o Director que pode acessá-lo e a senha autorizada. IMPORTANTE notar estas diferenças.

A primeira seção do documento é a de instalação do servidor da solução e o painel de gerenciamento web. A segunda seção é a de configuração do servidor e da solução de gerência web. A terceira sessão é a instalação e adição do cliente na lista do servidor. A quarta sessão demonstra como criar um trabalho de backup. Por fim, a última seção apresenta como realizar restauração de backupsa anteriores.

Instalação

Para instalar a solução será necessário primeiro instalar um tipo de banco de dados para uso próprio, em seguida instalar a solução em si, posteriormente instalar o bareos-webui e realizar algumas configurações básicas do servidor e de rede.

Instalando o PostgreSQL

Neste manual será demonstrada a instalação do PostgreSQL (recomendado) para a solução de backup Bareos. Será instalada a versão 10 do banco de dados PostgreSQL.

Primeiro, com um usuário com poderes de superusuário, adicione o repositório da versão 10 do banco a seu S.O da família Red Hat:

$ sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

 Em seguida, instale os pacotes necessários ao PostgreSQL:

$ sudo yum -y install postgresql10 postgresql10-devel postgresql10-contrib postgresql10-libs postgresql10-test postgresql10-server postgresql10-docs

Ative o serviço do PostgreSQL:

$ sudo systemctl enable postgresql-10

Rode o comando para inicializar a base de dados:

$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

Inicie o serviço e verifque o statatus:

$ sudo service postgresql-10 start
$ sudo service postgresql-10 status

Altere o parâmetro de conexões máximas no arquivo de configuração do PostgreSQL:

$ sudo nano /var/lib/pgsql/10/data/postgresql.conf
max_connections = 256

Reinicie o postgresql:

$ sudo service postgresql-10 restart

Ativando o FirewallD

O FirewallD é um firewall disponível no CentOs. Ele é utilizado na demonstração deste manual para filtrar portas na interface de produção do servidor de backup. Ative e inicie o FirewallD:

$ sudo systemctl enable firewalld
$ sudo service firewalld start
$ sudo service firewalld status
 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Qua 2018-09-12 15:19:34 EDT; 41min ago
     Docs: man:firewalld(1)
 Main PID: 731 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─731 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Set 12 15:19:31 t-bareos systemd[1]: Starting firewalld - dynamic firewall daemon...
Set 12 15:19:34 t-bareos systemd[1]: Started firewalld - dynamic firewall daemon.

Ative as portas que futuramente serão necessárias para o Bareos:

$ firewall-cmd --list-all
$ firewall-cmd --add-port=80/tcp --permanent
$ firewall-cmd --add-port=9101/tcp --permanent
$ firewall-cmd --add-port=9102/tcp --permanent
$ firewall-cmd --add-port=9103/tcp --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-all

Caso haja mais de uma interface de rede no servidor, uma boa prática é criar "zonas" no FirewallD contemplando as interfaces utilizadas para backup. Em seguida, realizar os filtros de portas nas zonas criadas ao invés de fazê-lo em todas as interfaces.

Instalando o Bareos

Considerando o S.O centOs na versão >=7 e o Bareos na versão 17.2, defina algumas variáveis para facilitar o processo de instalação:

$ DIST=CentOS_7  
$ RELEASE=release/17.2/ 
$ URL=http://download.bareos.org/bareos/$RELEASE/$DIST 

Faça o download do arquivo que adiciona o repositório do Bareos a seu S.O:

$ sudo wget -O /etc/yum.repos.d/bareos.repo $URL/bareos.repo

Agora execute o comando para realizar a instalação dos pacotes do Bareos:

$ sudo yum install -y bareos bareos-database-postgresql

Adicione o usuário postgres ao grupo do bareos, isto será necessário nas próximas etapas.

$ sudo usermod -aG bareos postgres

Execute os seguintes comandos para realizar o login com o usuário postgres e criar as tabelas do banco de dados da solução de backup:

$ sudo su - postgres

$ /usr/lib/bareos/scripts/create_bareos_database 
$ /usr/lib/bareos/scripts/make_bareos_tables 
$ /usr/lib/bareos/scripts/grant_bareos_privileges

$ exit

Após este ponto o servidor Bareos já estará instalado, mas a configuração da ferramenta será apresentada nas seções seguintes.

Instalando o bareos-webui

O bareos-webui é uma interface de gerenciamento web para o Bareos. Similiar ao webacula para o Bacula.

O bareos-webui é muito útil para emitir comandos e ver configurações do servidor de backup. Entretanto, para modificar as configurações é necessário utilizar as ferramentas convencionais: bconsole e edição dos arquivos de configuração em texto.

A instalação é simples, basta apenas executar o seguinte comando:

$ sudo yum install -y bareos-webui

Configuração

Bareos

Configure o arquivo principal do Director (componente central do Bareos). Sugere-se alterar parâmetros para os descritos abaixos como segue:

$ sudo nano /etc/bareos/bareos-dir.d/director/bareos-dir.conf

Name = #NOME DO SEU DIRECTOR: EX.: ifpe-cafg-bkp1
Maximum Concurrent Jobs = 256
Heartbeat Interval = 1 Minute
FD Connect Timeout = 180s

Neste ponto, com a alteração do nome do Director no arquivo principal, É NECESSÁRIO alterar o nome do Director nos arquivos de configuração do File Daemon (cliente de backup que o servidor possui) e do Storage (componente que armazena os backups). 

$ sudo nano /etc/bareos/bareos-fd.d/director/bareos-dir.conf
Name = #NOME DO SEU DIRECTOR

$ sudo nano /etc/bareos/bareos-sd.d/director/bareos-dir.conf
Name = #NOME DO SEU DIRECTOR

Para este manual, o diretório de backup considerado será o /backup. Serão criados subdiretórios para armazenamento dos backups dos tipos COMPLETO, INCREMENTAL e DIFERENCIAL.

$ sudo mkdir -p /backup/COMPLETO
$ sudo mkdir -p /backup/INCREMENTAL
$ sudo mkdir -p /backup/DIFERENCIAL

Altere as permissões dos referidos diretórios:

$ sudo chown -R bareos:bareos /backup/
$ sudo chmod -R 700 /backup/

 Inicie e ative os daemons do Bareos:

$ sudo systemctl enable bareos-dir
$ sudo service bareos-dir start 
$ sudo service bareos-sd start 
$ sudo service bareos-fd start
Storage daemons e Devices

Estes dois atributos são configurações globais que já possuem definições padrão no momento da instalação, entretanto, para uma boa prática no que se refere à configuração do servidor de backup Bareos, devem ser definidas logo no início antes de configurados qualquer trabalhos de backup.

Device é o dispositivo no qual volumes serão armazenados. No Linux, aponta basicamente para um caminho dentro da estrutura de diretórios do S.O. Como deve ser de seu conhecimento, um caminho pode apontar para um diretório físico na partição do S.O, para um diretório NFS remoto, para uma partição separada, para um disco completo separado, para um storage, e etc.

Storage refere-se a um grupo de armazenamento que dentre outras configurações, irá conter um ou mais Devices como atributos configurados. Vejamos à seguir uma configuração de exemplo para os Devices e os Storage Daemons.

Abaixo, as configurações recomendadas do atributo Device no contexto do Storage. O arquivo configurado é o /etc/bareos/bareos-sd.d/device/FileStorage.conf.

$ sudo nano /etc/bareos/bareos-sd.d/device/FileStorage.conf
...
Device {
  Name = Completo-Dev01
  Media Type = File
  Archive Device = /backup/COMPLETO
  LabelMedia = yes
  Random Access = yes
  AutomaticMount = yes
  RemovableMedia = no
  AlwaysOpen = no
  Maximum Concurrent Jobs = 64
}

Device {
  Name = Incremental-Dev01
  Media Type = File
  Archive Device = /backup/INCREMENTAL
  LabelMedia = yes
  Random Access = yes
  AutomaticMount = yes
  RemovableMedia = no
  AlwaysOpen = no
  Maximum Concurrent Jobs = 64
}

Device {
  Name = Diferencial-Dev01
  Media Type = File
  Archive Device = /backup/DIFERENCIAL
  LabelMedia = yes
  Random Access = yes
  AutomaticMount = yes
  RemovableMedia = no
  AlwaysOpen = no
  Maximum Concurrent Jobs = 64

}

Note que há um atributo Device para cada tipo de backup: completo, incremental e diferencial. Este mapeamento é interessante em um cenário futuro onde o armazenamento dos backups Full, por exemplo, seja separado (até fisicamente) dos outros tipos de backup. Essa melhoria não acarretaria em alterações no Bareos, apenas no S.O - fstab. OBS: não há configuração de Device no contexto do Director.

A configuração do atributo Storage é feita por meio do arquivo /etc/bareos/bareos-sd.d/storage/bareos-sd.conf. Ele contém configurações globais do armazenamento em seu próprio contexto.

Abaixo, as configurações recomendadas do atributo Storage no contexto do Director. O arquivo configurado é o /etc/bareos/bareos-dir.d/storage/File.conf.

$ sudo nano /etc/bareos/bareos-dir.d/storage/File.conf
...
Storage {
  Name = Completo-Dev01
  Address = # IP DO STORAGE, geralmente o mesmo IP desta máquina servidora
  SDPort = 9103
  Password = # senha em /etc/bareos/bareos-sd.d/director/bareos-dir.conf
  Device = Completo-Dev01
  Media Type = File
  Maximum Concurrent Jobs = 64
}

Storage {
  Name = Diferencial-Dev01
  Address =  # IP DO STORAGE, geralmente o mesmo IP desta máquina servidora
  SDPort = 9103
  Password = # senha em /etc/bareos/bareos-sd.d/director/bareos-dir.conf
  Device = Diferencial-Dev01
  Media Type = File
  Maximum Concurrent Jobs = 64
}

Storage {
  Name = Incremental-Dev01
  Address = # IP DO STORAGE, geralmente o mesmo IP desta máquina servidora
  SDPort = 9103
  Password = # senha em /etc/bareos/bareos-sd.d/director/bareos-dir.conf
  Device = Incremental-Dev01
  Media Type = File
  Maximum Concurrent Jobs = 64
}

O atributo Address é o IP ou FQDN do servidor onde está configurado o SD do Bareos.

O atributo SDPort informa a porta de acesso que está liberada no Storage (em seu próprio contexto).

O atributo Password informa a senha de acesso ao Storage. 

O atributo Device informa qual dispositivo configurado no Storage será utilizado. Neste caso, um mesmo Storage pode ter vários Devices, porém, é optado neste manual pela atribução de um único Device a um único Storage.

O Media Type é  o tipo de mídia selecionada, por padrão é "File".  

Maximum Concurrent Jobs é o número máximo de trabalhos sendo executados simultaneamente que podem escrever em no referido Storage

Findo tais configurações, somente se faz necessário apontar os nomes dos Storages como parâmetro nos atributos que o solicitarem ou que este for obrigatório (pools, Jobs...).

Reinicie o Storage:

$ sudo service bareos-sd restart

Bareos-webui

No arquivo /etc/bareos-webui/configuration.ini há configurações que podem ser modificadas à vontade do administrador. Por padrão não há esta necessidade.

Ao final do arquivo /etc/bareos/bareos-dir.d/profile/webui-admin.conf, adicione as seguintes linhas antes da chave de fechamento do atributo Profile:

$ sudo nano /etc/bareos/bareos-dir.d/profile/webui-admin.conf

Profile {
 ....
Plugin Options ACL = *all*
}

Configure o arquivo /etc/bareos-webui/directors.ini alterando principalmente as linhas 10 e 16 como segue:

$ sudo nano /etc/bareos-webui/directors.ini
....
[ifpe-cafg-bkp1] #linha 10
...

diraddress = # IP ou nome da máquina que contém o bareos (geralmente "localhost") #linha 16

Crie um usuário que possa usar a interface web. Basta copiar o original e modificá-lo:

$ sudo cp /etc/bareos/bareos-dir.d/console/admin.conf.example /etc/bareos/bareos-dir.d/console/cgti.conf
$ sudo nano /etc/bareos/bareos-dir.d/console/cgti.conf

Console {                 
  Name = cgti            
  Password = "cgti"      
  Profile = "webui-admin" 
}                         

Como root, execute o seguinte comando:

$ sudo setsebool -P httpd_can_network_connect on

Agora reinicie o apache (httpd) e o bareos:

$ sudo service httpd stop
$ sudo service httpd start

$ sudo service bareos-director stop
$ sudo service bareos-director start

Acesse a página de login do bareos-webui:

http://IP_SERVIDOR/bareos-webui/

imagem-bareos-webui-inicial.JPG

Utilizando as credenciais anteriormente configuradas é possível obter acesso a página inicial.

imagem-bareos-webui-home.JPG

Inicialmente não haverão muitas informações pois ainda não há trabalhos de backup configurados, apenas trabalhos automáticos de backup de arquivos da própria ferramenta configurados inicialmente às 21h00 .

Instalação do cliente de backup 

Etapa obrigatória no servidor

Antes de qualquer operação, primeiro verifique se o servidor possui conectividade com o cliente na interface de rede desejada. 
$ ping #ip_do_cliente

Cientes da conexão, NO SERVIDOR, digite o comando bconsole e em seguida, dentro do bconsole, rode o seguinte comando:

* configure add client name=#nome_do_cliente address=#ip_do_cliente password=#senha

Exported resource file "/etc/bareos/bareos-dir-export/client/ifpe-cafg-sambafs-fd/bareos-fd.d/director/t-bareos.conf":
Director {
  Name = t-bareos
  Password = "[md5]9af9de4b43cfd0d9d4e196fcced09bfd"
}
Created resource config file "/etc/bareos/bareos-dir.d/client/ifpe-cafg-sambafs-fd.conf":
Client {
  Name = ifpe-cafg-sambafs-fd
  Address = 10.20.253.199
  Password = cgti
}
*

Este comando realiza duas operações: cria os arquivos de configuração necessários no servidor e cria um arquivo de configuração do servidor a ser enviado e utilizado no cliente. Este arquivo já contém o nome do Director e a senha informada no comando. Guarde este arquivo para momento posterior.

#nome_do_cliente geralmente é o hostname do host adicionado do sufixo "-fd". No caso de exemplo, o nome do cliente foi ifpe-cafg-sambafs-fd.

#ip_do_cliente é o IP do cliente na interface a qual se deseja realizar trabalhos de backup. 10.20.253.199 no caso em questão.

#senha é a senha a qual o Director precisará para ter acesso ao Cliente bareos-fd. É uma senha de autorização ao Director. Mas como dito, esta já é enviada pré-configurada para o cliente.

A configuração no servidor está completa, agora é necessário realizar as configurações do cliente.

Para o nosso exemplo, agora copie via SCP, FTP, rsync, para a máquina cliente, o arquivo de configuração que está no caminho /etc/bareos/bareos-dir-export/client/ifpe-cafg-sambafs-fd/bareos-fd.d/director/t-bareos.conf.

As próximas etapas são no host cliente.

Clientes Linux

O cliente de backup Linux funciona para várias distribuições e versões, no entanto, a versão do cliente NUNCA deve ser superior a versão do servidor. Ou seja, se o servidor está na versão 17, instalar um cliente versão 18 será um problema, pois a comunicação não é compatível.

No caso do Debian, instale o pacote bareos-filedaemon no cliente:

$ sudo apt install -y bareos-filedaemon

No caso do centOs,  rode os seguinte comandos antes da instalação:

$ DIST=CentOS_7 
$ RELEASE=release/17.2/
$ URL=http://download.bareos.org/bareos/$RELEASE/$DIST 
$ wget -O /etc/yum.repos.d/bareos.repo $URL/bareos.repo 

Agora, rode o comando de instalação do pacote:

$ sudo yum install -y bareos-filedaemon

Acesse o arquivo de configuração do próprio cliente em /etc/bareos/bareos-fd.d/client/myself.conf

$ sudo nano /etc/bareos/bareos-fd.d/client/myself.conf 
Client {
  Name = ifpe-cafg-sambafs-fd
  Maximum Concurrent Jobs = 20
 }

A principal informação é o atributo Name que deve estar igual ao que foi configurado no servidor e vice-versa. Recomenda-se a manutenção do atributo.

Agora copie o arquivo gerado no final do processo de adição do cliente no servidor. Suponha que ele esteja em /home/cgti/t-bareos.conf. Copie para /etc/bareos/bareos-fd.d/director/. Isto permitirá a conexão do Director a este cliente via a senha informada na adição do cliente no lado do servidor.

Reinicie o bareos-fd, caso Debian.

$ sudo service bareos-fd restart

Ative e inicie o bareos-fd, caso centOs.

$ sudo systemctl enable bareos-fd
$ sudo systemctl start bareos-fd

NO SERVIDOR, rode o comando bconsole. Ao abrir o terminal, digite o comando status client e selecione na lista o cliente por meio da opção numerada,  digite-o seguido de ENTER:

* status client
The defined Client resources are:
     1: ifpe-cafg-sambafs-fd
     2: bareos-fd
Select Client (File daemon) resource (1-2): 1
Connecting to Client ifpe-cafg-sambafs-fd at 10.20.253.199:9102

ifpe-cafg-sambafs-fd Version: 16.2.4 (01 July 2016)  x86_64-pc-linux-gnu debian Debian GNU/Linux 9.3 (stretch)
Daemon started 17-set-18 16:27. Jobs: run=0 running=0.
 Heap: heap=131,072 smbytes=28,182 max_bytes=28,571 bufs=70 max_bufs=73
 Sizeof: boffset_t=8 size_t=8 debug=0 trace=0 bwlimit=0kB/s

Running Jobs:
t-bareos (director) connected at: 17-set-18 18:08
No Jobs running.
====

Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
======================================================================
     6  Full         10    233.3 M  OK       14-set-18 18:56 gab-comunicacoes-job
    14  Incr          0         0   OK       17-set-18 11:14 gab-comunicacoes-job
    15  Incr          0         0   OK       17-set-18 11:25 gab-comunicacoes-job
====
*

O servidor tentará obter conexão com o cliente. Caso haja algum problema, verifique se a porta 9102 - padrão na comunicação servidor-cliente - está aberta em prováveis firewalls de rede ou no firewall local do cliente. Para outros problemas, verificar se o IP está correto, se a máquina cliente está conectada, e verifique logs da ferramenta para soluções em casos mais complexos.

Clientes Windows

Para instalar clientes windows, primeiro realize o download do executável para a instalação de acordo com a versão do Director. Os binários de instalação podem ser encontrados em http://download.bareos.org/bareos/release/latest/windows. O instalador segue o padrão da maioria dos programas para Windows. 

Após abrir o instalador, clique em Next e em I Agree, em seguida selecione o diretório de instalação, sugere-se o padrão. Na próxima tela, marque somente a opção File Daemon (client) e Tray Monitor em Interfaces.

Em seguida, prestar bastante atenção aos campos pois devem estar de acordo com o que foi criado no Director nos passos anteriores - lembre-se que o cliente é adicionado ao servidor antes de proceder à sua instalação propriamente dita. Então preencha os campos de acordo com as informações. A senha complexa em Client Monitor Password não precisa ser alterada. Clique Next.

Será mostrado um arquivo em texto para ser adiciona ao servidor, mas lembre-se que este arquivo já está no servidor, então, ignore e clique em Next. Pronto, conclua a instalação e REINICIE O WINDOWS.

 NO SERVIDOR, rode o comando bconsole. Ao abrir o terminal, digite o comando status client e selecione na lista o cliente por meio da opção numerada,  digite-o seguido de ENTER:

* status client
The defined Client resources are:
     1: ifpe-cafg-sambafs-fd
     2: bareos-fd
     3: ifpe-cafg-maq12-fd
Select Client (File daemon) resource (1-3): 3
Connecting to Client ifpe-cafg-maq12-fd at 10.20.253.112:9102

ifpe-cafg-maq12-fd Version: 17.2.4 (21 Sep 2017)  VSS Linux Cross-compile Win64
Daemon started 20-Sep-18 12:22. Jobs: run=0 running=0.
Microsoft Windows 7 Professional Service Pack 1 (build 7601), 64-bit
 Heap: heap=0 smbytes=40,477 max_bytes=40,671 bufs=81 max_bufs=83
 Sizeof: boffset_t=8 size_t=8 debug=0 trace=1 bwlimit=0kB/s

Running Jobs:
t-win7-aleciano-mon (director) connected at: 20-Sep-18 12:23
t-bareos (director) connected at: 20-Sep-18 14:34
No Jobs running.
====

Terminated Jobs:
====
*

O servidor tentará conexão com o cliente. Como podemos ver a conexão teve sucesso, na linha 11 inclusive é possível ver o tipo de S.O, confirmando que é o cliente Windows recém-instalado.

Os binários ficam instalados em C:\Program Files\Bareos. E os arquivos de configuração em C:\ProgramData\Bareos.

Criando o primeiro trabalho de backup

Atributo Job

A configuração dos trabalhos de backup envolvem a definição de parâmetros nos arquivos de configuração que informarão entre outras coisas, o agendamento do backup, em que local será salvo, informações sobre os volumes utilizados e qual o cliente de backup utilizado.

Abaixo os principais atributos na configuração de um Job (trabalho). Serão apresentados cada um destes em detalhes à seguir. O arquivo utilizado é o /etc/bareos/bareos-dir.d/gab-comunicacoes-fd.conf:

$ sudo nano /etc/bareos/bareos-dir.d/gab-comunicacoes-fd.conf

Job {
Name = gab-comunicacoes-job
Type = Backup
Client = ifpe-cafg-sambafs-fd
FileSet = gab-comunicacoes-fileset
Schedule = gab-comunicacoes-schedule
Pool = gab-comunicacoes-completo-pool
Messages = Standard
}

Para uma melhor compreensão dos termos no que se refere a ferramenta de backup, consultar referências oficiais da ferramentas que estão linkadas no final deste manual.

Name é o nome do trabalho (job) de backup. Ele define de forma única um determinado trabalho, por este motivo, não devem haver diferentes trabalhos com o mesmo nome.

Type é o tipo do trabalho. Podem haver trabalhos do tipo backup, restore, verify, migrate, dentre outros. Por padrão é utilizado o tipo backup, para realizar cópia dos arquivos. O segundo tipo, restore, é mais utilizado quando se deseja restaurar os arquivos, porém, é comum ter esse trabalho com o tipo restore configurado mas não agendado (sem Schedule), ou seja, só será executado manualmente por intermédio de um administrador do sistema.

Client define o nome do cliente que sofrerá a ação de backup. Este nome é definido no ato de configuração do cliente e na adição do cliente de backup às configurações do servidor Bareos. Não é obrigatório ser o mesmo nome do host cliente, mas uma boa prática é utilizar este parâmetro como nome para que seja possível rapidamente identificar a qual host um cliente de backup está realacionado.

O Fileset ou conjunto de arquivos define quais os diretórios sofrerão ação de backup. Por exemplo, /srv/arquivos/termos/ é um parâmetro utilizado na configuração de um dos atributos de Fileset - este e outros atributos serão detalhados nas seções à seguir..

Schedule é o atributo que determina qual tipo de agendamento configurado será utilizado para realização do trabalho de backup. Por exemplo, por meio do schedule é possível informar que o trabalho será realizado todos os dias às 20:15.

Para compreender o Pool é preciso compreender os volumes. O volume equivale a um arquivo de tamanho ou duração máxima pré-configurado e que vai recebendo os dados salvos nos trabalhos de backup. Quando um volume fica cheio ou tem sua duração encerrada, o Bareos proverá um novo. Assim, essa configuração dos volumes é feita pelo atributo Pool. Cada um destes agrupa uma série de volumes. Portanto, o atibuto Pool define os parâmetros que os volumes criados naquele trabalho irão possuir por padrão - um volume pode ter seu atributo modificado após a criação. Por exemplo: inicialmente um volume pode ter herdado da configuração do Pool o tamanho máximo de 1 GB. Mas é possível alterar esse volume em específico posteriormente e aumentá-lo para 2 GB ou reduzir para 490 MB.

Messages é um atributo que define para onde as mensagens ou "logs" do trabalho serão enviadas em tempo real. Por padrão, são enviadas para Standard, que é a saída padrão do Bareos. Posteriormente é possível acessar um console (bconsole) e ver as mensagens recebidas no "canal" Standard.

Os atributos fileset, pool e schedule podem ser configurados para cada trabalho de backup em específico. Isto é necessário pois, por exemplo, nem todos os arquivos que sofrerão backup estarão no mesmo fileset e nem todos os trabalhos obedecerão ao mesmo schedule. Por isto recomenda-se a sua configuração para cada tipo de trabalho de backup inserido.

Atributo Fileset

O fileset é o conjunto de arquivos para backup. Para configurar filesets, no servidor, insira o arquivo no diretório /etc/bareos/bareos-dir.d/fileset. Abaixo, um exemplo de configuração básica:

$ sudo nano /etc/bareos/bareos-dir.d/fileset/gab-comunicacoes-fileset.conf

FileSet {
  Name = gab-comunicacoes-fileset
  Description = "Fileset dos arquivos de portarias, resoluções e termos."
  Include {
    Options {
      Signature = MD5 
      Compression = GZIP6		
  }
    File = /srv/arquivos/portarias
    File = /srv/arquivos/resolucoes
    File = /srv/arquivos/termos
  }
}

Atributo Pool

O atributo pool, como dito mencionado, configura os volumes a serem utilizados no trabalho de backup. Abaixo um exemplo de configuração básica. O arquivo localiza-se em /etc/bareos/bareos-dir.d/pool/gab-comunicacoes-pool.conf.

$ sudo nano /etc/bareos/bareos-dir.d/pool/gab-comunicacoes-pool.conf

Pool {
  Name = gab-comunicacoes-incremental-pool
  Pool Type = Backup
  Storage = Incremental-Dev01
  Recycle Oldest Volume = yes
  Volume Retention = 6 days
  Recycle = yes
  AutoPrune = yes
  LabelFormat = gab-comunicacoes-incr
  Maximum Volume Bytes = 5G
}

Pool {
  Name = gab-comunicacoes-diferencial-pool
  Pool Type = Backup
  Storage = Diferencial-Dev01
  Recycle Oldest Volume = yes
  Volume Retention = 21 days
  Recycle = yes
  AutoPrune = yes
  LabelFormat = gab-comunicacoes-dif
  Maximum Volume Bytes = 15G
}

Pool {
  Name = gab-comunicacoes-completo-pool
  Pool Type = Backup
  Storage = Completo-Dev01
  Recycle Oldest Volume = yes
  Volume Retention = 45 days
  Recycle = yes
  AutoPrune = yes
  LabelFormat = gab-comunicacoes-full
  Maximum Volume Bytes = 25G
}

Note que foram selecionados um pool diferente para cada tipo de backup. Isto se deve ao fato de que os requisitos para cada tipo de backup podem ser diferentes: tamanho, duração, nome...

O atributo Name define o nome do pool e geralmente este nome é utilizado na configuração do agendamento.

O atributo Pool Type define o tipo de pool utilizado.

O atributo Storage define o Storage utilizado pelo pool em questão.

O atributo LabelFormat define o rótulo do nome dos volumes quando estes forem implementados. Geralmente é adicionado um número respeitando uma sequência ao final do nome do volume.

Volume RetentionMaximum Volume Bytes definem, respectivamente, o tempo desde a sua criação em que o volume continuará sendo escrito, e, o tamanho máximo do volume. Ao se atingir o tempo ou tamanho máximo do volume, na próxima situação em que for solicitada a sua escrita, o Bareos proverá um volume novo.

Os atributos remanescentes podem ser alterados conforme a necessidade do administrador. Para mais informações se faz necessário a consulta na documentação oficial da ferramenta.

Atributo Schedule

Este é responsável pela programação ou agendamento de trabalhos, sejam de backups, restauração (restore) e etc. Ele não é necessário por padrão na configuração do Job, mas em um ambiente em produção este tipo de automatização se faz necessária. Abaixo a configuração de exemplo do Schedule. O arquivo configurado é o /etc/bareos/bareos-dir.d/schedule/gab-comunicacoes-schedule.conf:

$ sudo nano /etc/bareos/bareos-dir.d/schedule/gab-comunicacoes-schedule.conf

Schedule {
  Name = gab-comunicacoes-schedule
  Run = Level=Full Pool=gab-comunicacoes-completo-pool 1st sun at 00:05
  Run = Level=Differential Pool=gab-comunicacoes-diferencial-pool 2nd-5th sun at 00:05
  Run = Level=Incremental Pool=gab-comunicacoes-incremental-pool at 20:05
}

Note que o atributo Pool configurado anteriormente é utilizado aqui neste ponto. O trabalho de backup que utilizar este agendamento irá executar um trabalho Full às 00:05 do primeiro domingo (do mês), um trabalho Differential do segundo ao quinto domingo do mês (se houver) e um trabalho Incremental todo os dias às 20:05. Para mais exemplos de agendamentos consulte a documentação oficial da ferramenta.

Executando o trabalho

Há várias formas de executar o trabalho. Se ele estiver agendado, será executado automaticamente, mas é possível executar o trabalho de forma manual para verificar se as configurações estão corretas. Será demonstrado via bconsole e via painel web.

Bconsole:

Na linha de comando do servidor digite o comando bconsole, em seguida ative as mensagens automáticas no painel:

$ sudo bconsole
Connecting to Director localhost:9101
1000 OK: t-bareos Version: 17.2.4 (21 Sep 2017)
Enter a period to cancel a command.
* autodisplay on

Digite run e ENTER, em seguida digite o número correspondente ao trabalho dentre as opções apresentadas e ENTER:

*run
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
     1: RestoreFiles
     2: gab-comunicacoes-job
     3: BackupCatalog
     4: backup-bareos-fd
Select Job resource (1-4): 2

Agora digite "yes" e ENTER.

Run Backup job
JobName:  gab-comunicacoes-job
Level:    Incremental
Client:   ifpe-cafg-sambafs-fd
Format:   Native
FileSet:  gab-comunicacoes-fileset
Pool:     gab-comunicacoes-completo-pool (From Job resource)
Storage:  Completo-Dev01 (From Pool resource)
When:     2018-09-14 17:03:12
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=6
You have messages.

Pronto, o trabalho foi iniciado. As mensagens aparecerão na tela com várias informações, a mais importante é saber no final se o backup foi de sucesso (OK) ou apresentou erro (Error).

14-Set 17:56 bareos-sd JobId 6: Elapsed time=00:00:19, Transfer rate=12.28 M Bytes/second
14-Set 17:56 t-bareos JobId 6: sql_create.c:872 Insert of attributes batch table done
14-Set 17:56 t-bareos JobId 6: Bareos t-bareos 17.2.4 (21Sep17):
  Build OS:               x86_64-redhat-linux-gnu redhat CentOS Linux release 7.4.1708 (Core)
  JobId:                  6
  Job:                    gab-comunicacoes-job.2018-09-14_17.56.07_33
  Backup Level:           Full (upgraded from Incremental)
  Client:                 "ifpe-cafg-sambafs-fd" 16.2.4 (01Jul16) x86_64-pc-linux-gnu,debian,Debian GNU/Linux 9.3 (stretch)
  FileSet:                "gab-comunicacoes-fileset" 2018-09-14 17:04:00
  Pool:                   "gab-comunicacoes-completo-pool" (From Job resource)
  Catalog:                "MyCatalog" (From Client resource)
  Storage:                "Completo-Dev01" (From Pool resource)
  Scheduled time:         14-Set-2018 17:56:06
  Start time:             14-Set-2018 17:56:09
  End time:               14-Set-2018 17:56:30
  Elapsed time:           21 secs
  Priority:               10
  FD Files Written:       10
  SD Files Written:       10
  FD Bytes Written:       233,394,285 (233.3 MB)
  SD Bytes Written:       233,395,389 (233.3 MB)
  Rate:                   11114.0 KB/s
  Software Compression:   4.2 % (gzip)
  VSS:                    no
  Encryption:             no
  Accurate:               no
  Volume name(s):         gab-comunicacoes-full0003
  Volume Session Id:      2
  Volume Session Time:    1536962107
  Last Volume Bytes:      233,571,320 (233.5 MB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

Pronto, backup OK. Agora execute o trabalho manualmente via painel web na próxima sessão.

Painel do bareos-webui:

Acesse a página do bareos-webui http://IP_SERVIDOR/bareos-webui e logue com seu usuário e senha. Após isso, na página inicial, clique em Jobs no painel superior lado esquerdo.

jobs-home.JPG

Em seguida clique na segunda aba, de nome Actions. Na página que será exibida, clique no botão de "play" logo ao lado do nome que deseja executar o trabalho de backup.

jobs-actions1.JPG

O sistema informará que o trabalho foi agendado e o seu o ID também será apresentado.

jobs-queued.JPG

O ID de um job é uma informação importante para identificá-lo perante outros que foram executados ao longo da vida do sistema.

 Um tempo depois, dependendo do volume dados, será possível notar qual o resultado do trabalho. Como é possível notar na imagem abaixo, o trabalho de ID=15 foi realizado com sucesso. Assim, este trabalho está configurado corretamente, seu cliente está com conexão disponível e será executado conforme o agendamento (Schedule) determinado.

jobs-Success1.JPG

Realizando um trabalho de restauração de um backup

O trabalho de restauração (restore) tem como objetivo recuperar o backup salvo no servidor e restaurar os arquivos no cliente. Também é possível que este trabalho recupere os arquivos PARA um outro host, por exemplo, quando a máquina cliente não está operacional e se deseja utilizar os arquivos em um host secundário ou reserva. Neste caso, o cliente de backup precisa estar instalado na segunda máquina e configurado no servidor como um dos clientes normais.

Suponha que os arquivos representados pelo fileset gab-comunicacoes-fileset tenham sido apagados acidentalmente no cliente. Vamos utilizar o painel web para realizar a restauração. O fileset em questão aponta para os diretórios: /srv/arquivos/portarias; /srv/arquivos/resolucoes; /srv/arquivos/termos.

Acesse a página do bareos-webui http://IP_SERVIDOR/bareos-webui/ e logue com seu usuário e senha. Após isso, na página inicial, clique em Restore no painel superior lado esquerdo.

restore--1.JPG

Na próxima tela existem diversas informações sobre como pode ser realizado o trabalho de restauração. No lado esquerdo primeira opção (Client) é possível selecionar o cliente a qual os dados a qual deseja recuperação estão relacionados. A segunda opção (Backup jobs) seleciona a qual trabalho de backup deseja-se a recuperação, geralmente é escolhido o último - qualquer que seja - ou o último Full. A terceira opção (Merge all Client filesets), quando marcada 'Yes'. informa que todos os filesets do cliente serão recuperados, mesmo que no último backup incremental algum deles não tenha sido modificado. A quarta opção (Merge all related...), quando marcada 'Yes', informa que todos os trabalhos de backups até o último Full serão mesclados e recuperados. A quinta opção (Restore to client) pergunta a qual cliente se deseja restaurar os dados, geralmente é ao mesmo cliente de onde se originaram os dados no backup, porém, é possível selecionar um outro cliente. A sexta opção não se altera. A sétima opção (Replace files on client) pergunta se caso existirem os dados ou diretórios na máquina do cliente no caminho da oitava opção, se podem ser sobrescritos. A última opção (Restore location on client), como comentado, é o caminho para o qual os dados serão restaurados. Por padrão, o Bareos seleciona um local temporário ao invés do local original. Após escolher, clicar Restore.

restore-2.JPG

Aparecerá na tela um diálogo informando que o trabalho foi inciado.

restore-3.JPG

Após algum tempo será possível ver na lista de trabalhos do Bareos no painel web o resultado do trabalho. Então, é possível o administrador mover os dados do diretório temporário para onde necessitar.

restore-4.JPG

Referências

Referência principal do Bareos, http://doc.bareos.org/master/html/bareos-manual-main-reference.html