Bacula的安装配置相对简单,采用模块化设计,具有良好的扩展性和内置的任务调度程序,可以设置任务优先级,同时提供了数据安全性的保障,如通过CRA M-MD5口令验证和MD5或SHA1签名验证确保数据安全。
共有5个部分组成:
1、Director Daemon:负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库文件中。其配置文件为bacula-dir.conf。
2、Storage Daemon(SD):主要负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。
3、File Daemon(FD):安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。
4、Console:管理控制台。可以通过这个控制台连接到Director Daemon进行管理备份与恢复操作。
5、Monitor:进程监控端。
工作流程:
1、通过console连接到Director端,备份恢复操作开始。
2、Director端从自己的数据库中调出记录信息,对存储端SD与客户端FD的任务进行协调。
3、客户端FD负责验证Director的操作许可,如果验证通过,则允许连接到存储端SD
4、客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD指定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD指定的位置上,完成备份恢复过程。
Bacula备份系统组成图

它由三个主要组件组成:Director(导演)、Storage Daemon(存储守护进程)和 File Daemon(文件守护进程)。Bacula系统其核心模块组成:
Director模块(Bacula-dir.conf):负责整个系统的运行,包括Job、FileSet、Schedule等模块的配置,并调度其他两个模块工作。
Storage Daemon模块(Bacula-sd.conf):作为存储端,接收并备份来自网络的数据,恢复时将数据传出。
File Daemon模块(Bacula-fd.conf):在备份时发送文件,在恢复时接收数据并进行恢复。
每个组件都有自己的配置文件,以定义它们的行为和交互方式。在你提供的文件名中,`bacula-dir.conf` 是 Director 的配置文件,`bacula-sd.conf` 是 Storage Daemon 的配置文件,而 `bacula-fd.conf` 是 File Daemon 的配置文件。
### bacula-dir.conf (导演配置文件)
**目录服务** 是 Bacula 系统的大脑,负责调度备份、验证和恢复操作。`bacula-dir.conf` 文件包含以下关键配置项:
1. **Director 名称**:用以标识 Director 的名称,如 `Director { name = mydirector }`。
2. **密码**:Director 与其它组件通信时的安全凭据,如 `Password = "secret"`。
3. **数据库连接**:Director 用来存储作业历史和元数据的数据库配置,包括类型(MySQL, PostgreSQL等)和连接参数。
4. **Client(FileDaemon)定义**:列出所有可以进行备份的客户端,包括它们的名称和 IP 地址。
5. **Job 定义**:定义备份作业的详细信息,包括作业名称、类型(Full, Incremental, Differential)、备份时间、执行频率以及使用的 Client 和 Storage。
### bacula-sd.conf (存储守护进程配置文件)
**存储守护进程** 负责实际的数据存储备份和恢复。它的配置文件主要包括:
1. **Storage 名称**:定义 Storage Daemon 的名称,如 `Storage { name = mystorage }`。
2. **Device**:定义物理备份介质,如磁盘目录或磁带驱动器,包括设备名称和路径,如 `Device { name = MyDisk device = /var/lib/bacula }`。
3. **Media Type**:指定 Device 使用的介质类型,如 `MediaType = Tape`,定义了介质的属性和备份策略。
4. **Pool**:定义存储资源池,包括磁带或磁盘上的数据集,如 `Pool { name = Default }`。
5. **Working Directory**:Storage Daemon 运行时的工作目录,用于临时文件和日志。
6. **Password**:用于与 Director 和 File Daemon 通信的密码。
### bacula-fd.conf (文件守护进程配置文件)
**文件守护进程** 在客户端系统上运行,提供文件系统的访问权限以进行备份。`bacula-fd.conf` 包括:
1. **Client 名称**:与 Director 中匹配的 Client 名称,如 `Client { name = myclient }`。
2. **工作目录**:FD 运行时的工作目录,通常包含日志文件。
3. **FD 服务端口**:File Daemon 监听的端口号,如 `FDPort = 9102`。
4. **Password**:与 Director 和 Storage Daemon 通信的密码。
5. **FileSet**:定义备份的文件集合,包括要备份的路径、排除规则等,如 `FileSet { name = "MyFiles" include = { file = /home } }`。 配置这些文件时,需确保语法正确、权限设置得当,并且所有组件之间的通信能够顺利进行。
此外,Bacula 还允许通过 `include` 指令将部分配置分散到单独的文件中,以保持主配置文件的整洁。在实际部署中,根据具体需求进行调整和优化,例如添加认证机制、设置备份策略、监控和报警设置等。