Solução de backup com Bareos

O Bareos é composto por três componentes principais: o Director, que controla os backups; o Console, que permite gerenciar o servidor via linha de comando; o Storage Daemon, que armazena os dados de backup de forma independente; e o File Daemon, que atua como cliente, fornecendo os arquivos de backup ao Director.

Utilizaremos a seguinte versão do Debian

# cat /etc/os-release

PRETTY_NAME=”Debian GNU/Linux 11 (bullseye)”
NAME=”Debian GNU/Linux”
VERSION_ID=”11″
VERSION=”11 (bullseye)”
VERSION_CODENAME=bullseye

Instalar Dependências:

# apt install nmap vim gnupg2 -y

Baixe o script para adicionar os repositórios do Bareos:

# wget https://download.bareos.org/current/Debian_11/add_bareos_repositories.sh

Dê permissão de execução ao script:

# chmod +x add_bareos_repositories.sh

Execute e apague o script:

# bash add_bareos_repositories.sh && rm add_bareos_repositories.sh

Atualize a lista de pacotes:

# apt update

Instale o PostgreSQL, Bareos e os pacotes necessários:

# apt install postgresql postgresql-contrib bareos bareos-database-postgresql -y

Responda conforme as imagens:

SIM

Localhost, OK

Utililze uma senha forte

Instale o Bareos WebUI:

# apt install bareos-webui -y

Habilitar o módulo proxy_fcgi e setenvif:

# /usr/sbin/a2enmod proxy_fcgi setenvif

Habilitar a configuração do PHP 7.4-FPM:

# /usr/sbin/a2enconf php7.4-fpm

Crie um redirecionamento permanente para o Apache:

# sed -i '11i RedirectMatch permanent ^/$ /bareos-webui/' /etc/apache2/sites-available/000-default.conf

Recarregue o Apache para aplicar as alterações:

# systemctl reload apache2

Configurar o Bareos

Crie o arquivo de configuração:

cat <<EOF > /etc/bareos/bareos-dir.d/console/admin.conf
#
# Restricted console used by bareos-webui
#
Console {
  # Login e senha (bareos-webui)
  Name = admin
  Password = "P@ssw0rd"
  Profile = "webui-admin"

  # As php does not support TLS-PSK,
  # and the director has TLS enabled by default,
  # we need to either disable TLS or setup
  # TLS with certificates.
  #
  # For testing purposes we disable it here
  TLS Enable = No
}
EOF

Reinicie os serviços do Bareos para aplicar as alterações:

# systemctl restart bareos-dir
# systemctl restart bareos-sd
# systemctl restart bareos-fd

Os serviços mencionados são:

bareos-dir (Bareos Director): Este é o componente central do Bareos que gerencia e controla as operações de backup, recuperação, verificação e arquivamento. Ele coordena a comunicação entre os outros componentes do Bareos.

bareos-sd (Bareos Storage Daemon): Este serviço é responsável pelo armazenamento físico dos dados de backup. Ele recebe os dados do File Daemon e os armazena no dispositivo de backup configurado (disco, fita, etc.).

bareos-fd (Bareos File Daemon): Também conhecido como cliente Bareos, este serviço é instalado nos sistemas que precisam ser protegidos. Ele lida com a transmissão de dados para o Storage Daemon, sob o controle do Director.

Se você executar esse comando, verá o status atual desses daemons, incluindo se estão ativos (em execução), inativos ou se há algum erro.

# systemctl status bareos-dir bareos-sd bareos-fd

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

http://192.168.0.*/bareos-webui

Adicionar uma conta de usuário (operatorwebui-readonly )

bconsole
configure add console name=joserf password=secret profile=webui-admin tlsenable=false

A tela de login pode ser alterada para o tema default da seguinte forma:

# sed -i '69iname=default' /etc/bareos-webui/configuration.ini

Configurações iniciais (Schedules)

# vim /etc/bareos/bareos-dir.d/schedule/DailyBackup.conf

Adicione um dos exemplos abaixo:

Backup Diário (Todos os dias às 23:00)

Schedule {
  Name = "DailyBackup"
  Run = Full daily at 23:00
  #Run = Incremental mon-sat at 23:00
}

Backup Semanal (Full no Domingo, Incremental de Segunda a Sábado)

# vim /etc/bareos/bareos-dir.d/schedule/WeeklyCycle.conf
Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 23:00
  Run = Incremental mon-sat at 23:00
}

Configurar a retenção nos Pools (Differential.conf Full.conf Incremental.conf)

# vim /etc/bareos/bareos-dir.d/pool/Differential.conf
Pool {
  Name = Differential
  Pool Type = Backup
  Recycle = yes                       # Bareos can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 90 days          # How long should the Differential Backups be kept?
  Maximum Volume Bytes = 10G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
  Label Format = "Differential-"      # Volumes will be labeled "Differential-<volume-id>"
}

Após as mudanças, reinicie o Bareos Director para aplicar as novas configurações:

# systemctl restart bareos-director

Backup Mensal (Full no 1º dia do mês, Diferencial todo Domingo)

# vim /etc/bareos/bareos-dir.d/schedule/MonthlyBackup.conf
Schedule {
Name = "MonthlyBackup"
Run = Full 1st sun at 23:00
Run = Differential sun at 23:00
}

Instalação do cliente de backup (Linux)

Adicione o repositório oficial do bareos, no exemplo Ubuntu 22.04

​​​​wget https://download.bareos.org/current/xUbuntu_22.04/add_bareos_repositories.sh && ​​​​chmod +x add_bareos_repositories.sh

Execute o script para instalação do Bareos no Ubuntu

$ sudo sh ./add_bareos_repositories.sh && rm add_bareos_repositories.sh
$ sudo apt update
$ sudo apt install bareos-client

Edite o arquivo de configuração e altere os dados como desejar

$ sudo vim /etc/bareos/bconsole.conf
#
# Bareos User Agent (or Console) Configuration File
#

Director {
  Name = bareos-dir # Não alterar
  address = localhost # Não alterar
  Password = "ekkt632oF6ijB51e4QDD0oMC29XzCCVKzIxwIKS7Bbtf"
  Description = "Bareos Console credentials for local Director"
}

Altere apenas a senha nos arquivos abaixo para que fiquem iguais à do arquivo acima.

$ sudo vim /etc/bareos/bareos-fd.d/director/bareos-dir.conf
$ sudo vim /etc/bareos/bareos-fd.d/director/bareos-mon.conf

O arquivo abaixo altere apenas o Name, no nosso exemplo Name=ti023-fd

$ sudo vim /etc/bareos/bareos-fd.d/client/myself.conf

Reiniciando o serviço e verificando o status

$ sudo service bareos-fd restart && sudo service bareos-fd status

Nomes de host em endereços IP (necessário quando não temos um servidor DNS)

$ sudo vim /etc/hosts
192.168.0.32 srvBareos # IP Servidor Bareos

No servidor Bareos (Debian 11), crie o arquivo do cliente, no exemplo ti023

# vim /etc/bareos/bareos-dir.d/client/ti023-fd.conf
Client {
  Name = "ti023-fd"
  Address = 192.168.0.23
  Password = "ekkt632oF6ijB51e4QDD0oMC29XzCCVKzIxwIKS7Bbtf"
  ConnectionFromDirectorToClient = yes
  Catalog = MyCatalog
}
# vim /etc/bareos/bareos-dir.d/fileset/fileset-ti023.conf
FileSet {
  Name = "FileSet-ti023"
  Include {
    Options {
      signature = MD5    
      Compression = GZIP  
    }
    File = /home/joserf
  }

  # Opcional: Excluir alguma subpasta, arquivo temporário, etc.
  # Exclude {
  #   File = /home/joserf/.cache
  #   File = /home/joserf/algumaOutrasPastaQueNaoQuero
  # }
}

# vim /etc/bareos/bareos-dir.d/job/backup-ti023.conf

Job {
  Name = "Backup-ti023"
  Type = Backup
  Client = "ti023-fd"
  FileSet = "FileSet-ti023"
  Schedule = "DailyBackup" # Escolha o Schedule que deseja
  Storage = "File"
  Pool = "Full"
  Messages = "Standard"
  #Messages = "BackupAlerts" # Alertas no whatsapp 
  Priority = 10

  # Executa um comando antes do backup iniciar
  RunScript {
    Command = "echo 'Backup iniciando'"
    RunsWhen = Before
    RunsOnClient = yes
  }

  # Executa um comando depois que o backup terminar
  RunScript {
    Command = "echo 'Backup concluído'"
    RunsWhen = After
    RunsOnClient = yes
  }
}

RunScript → Bloco para definir comandos personalizados antes e depois do backup.

Command = "comando" → O comando que será executado.

RunsWhen = Before → Define que o comando roda antes do backup.

RunsWhen = After → Define que o comando roda após o backup.

RunsOnClient = yes → O comando será executado no cliente do backup.

  • Se quiser rodar no servidor Bareos, use RunsOnClient = no.

Reinicie os serviço do Bareos para aplicar as alterações:

# systemctl restart bareos-dir

Instalação do cliente de backup (Windows)

Testar a Resolução de Nome no Cliente Windows

Bareos Community Repository:

https://download.bareos.org/current/

https://download.bareos.org/current/windows

Após a instalação, o arquivo de configuração é gerado, conforme abaixo:

O sufixo “-fd” no nome do cliente no Bareos significa “File Daemon”. Isso é um padrão de nomenclatura do Bareos para diferenciar os componentes do sistema:

-sd → Bareos Storage Daemon (onde os backups são armazenados)

-dir → Bareos Director

-fd → Bareos File Daemon (cliente que recebe o backup)

No servidor Bareos (Debian 11), crie o arquivo do cliente.

# vim /etc/bareos/bareos-dir.d/client/srvad-fd.conf

Adicione:

Client {
  Name = "srvad-fd"
  Address = "192.168.0.90"  # IP do cliente Windows (srvAD)
  Password = "/cDQhGNUqkMJHy2muDs8ddveNKtzBgEAku9z0A0YfG9l"
  ConnectionFromDirectorToClient = yes
  Catalog = MyCatalog
}

Explicação dos parâmetros:

  • Name = "srvad-fd" → Nome do cliente Windows no Bareos.
  • Address = "192.168.0.90" → IP do cliente Windows (srvad-fd).
  • Password = "/cDQhGNUqkMJHy2muDs8ddveNKtzBgEAku9z0A0YfG9l"
  • ConnectionFromDirectorToClient = yes → Permite conexão do Bareos Director ao cliente Windows.
  • Catalog = MyCatalog → Usa o catálogo principal do Bareos.

Crie um FileSet específico para este cliente.

# vim /etc/bareos/bareos-dir.d/fileset/fileset-srvad.conf

Adicione:

FileSet {
  Name = "FileSet-srvad"
  Include {
    Options {
      Signature = MD5
      Compression = GZIP
    }
    File = "C:/Rede"
  }
}

Explicação:

  • "C:/Rede" → Define que somente essa pasta será salva no backup.
  • Compression = GZIP → Reduz o tamanho do backup.
  • Signature = MD5 → Garante integridade dos arquivos.

Agora, crie um Job para o cliente srvad-fd.

# vim /etc/bareos/bareos-dir.d/job/backup-srvad.conf

Adicione:

Job {
  Name = "Backup-srvad"
  Type = Backup
  Client = "srvad-fd"
  FileSet = "FileSet-srvad"
  Schedule = "WeeklyCycle"
  Storage = "File"
  Pool = "Full"
  Messages = Standard
  Priority = 10
}

Explicação:

  • Client = "srvad-fd" → Nome do cliente Windows.
  • FileSet = "FileSet-srvad" → Usa o FileSet criado para apenas C:\Rede.
  • Schedule = "WeeklyCycle" → Pode ser ajustado conforme necessário.

Após configurar o FileSet e o Job, reinicie o Bareos Director:

# systemctl restart bareos-dir

Verifique se o cliente está registrado:

bconsole
reload
status

Se o cliente responder, está tudo funcionando!

Se der erro “Failed to connect”, verifique:

  • Se o serviço do Bareos FD está rodando (services.msc no Windows).
  • Se a porta 9102 está aberta (netstat -ano | findstr :9102 no Windows).
  • Se o firewall está bloqueando


Associar o Schedule ao Job do Cliente

Agora, edite o Job do Backup do cliente srvad-fd:

# vim /etc/bareos/bareos-dir.d/job/backup-srvad.conf
Job {
  Name = "Backup-srvad"
  Type = Backup
  Client = "srvad-fd"
  FileSet = "FileSet-srvad"
  Schedule = "DailyBackup"  # Escolha o Schedule que deseja
  Storage = "File"
  Pool = "Full"
  Messages = Standard
  Priority = 10
}

Após configurar o Schedule, reinicie o Bareos Director:

# systemctl restart bareos-dir

Confira se o Schedule foi aplicado corretamente:

bconsole
show schedules

Para testar se o backup será executado no horário correto:

status scheduler

Dicas:

Erros de configuração, teste a sintaxe antes de reiniciar, Se houver erros, eles serão exibidos, se o comando não mostrar erros, a configuração está correta.

# /usr/sbin/bareos-dir -t

O systemd bloqueia reinicializações após múltiplas falhas. Para liberar e permitir que o Bareos Director seja reiniciado:

# systemctl reset-failed bareos-director
# systemctl restart bareos-director
# systemctl status bareos-director

Se o Bareos PostgreSQL como catálogo, o serviço do banco de dados pode estar fora do ar.

# systemctl status postgresql