开源备份工具bacula

BACULA安装

Bacula是一款开源的跨平台网络备份工具,提供基于企业级的CS的备份解决方案。可以对数据进行备份、恢复、以及完整性校验。

功能特点

支持完全备份增量备份差异备份

支持多种恢复方式

支持多种文件系统下的备份恢复(ext3、ext2、reiserfs、xfs、jfs、smbfs、iso9660、ntfs等)

支持各种备份介质

支持多种操作系统

强大的内部功能

组成部分

一个完整的bacula备份系统,由下面5个部分组成

Director Daemon:负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库文件中。其配置文件为bacula-dir.conf。

Storage Daemon(SD):主要负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。

File Daemon(FD):安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。

Console:管理控制台。可以通过这个控制台连接到Director Daemon进行管理备份与恢复操作。

Monitor:进程监控端。

工作流程

1、通过console连接到Director端,备份恢复操作开始。

2、Director端从自己的数据库中调出记录信息,对存储端SD与客户端FD的任务进行协调。

3、客户端FD负责验证Director的操作许可,如果验证通过,则允许连接到存储端SD

4、客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD指定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD指定的位置上,完成备份恢复过程。

以上是bacula简介均属百度百科摘抄。

拓扑流程图:

其实bacula这5个核心组件不必分别装在不同的机器上,笔者这儿就直接使用2台云主机模拟服务流程:

1.京东云主机:server [ console director mysql monitor SD ]

2.阿里云主机:client   [ FD ]

[[email protected] ~]# uname -r

3.10.0-514.el7.x86_64

需要安装数据库

yum install mariadb* -y

在Client和Server端下载解压预编译包

[[email protected] src]# pwd
/usr/local/src
[[email protected] src]# tar -zvxf bacula-5.2.13.tar.gz 
[[email protected] src]# cd bacula-5.2.13

Client主机上:

[[email protected] bacula-5.2.13]# ./configure --prefix=/usr/local/bacula --enable-client-only
[[email protected] bacula-5.2.13]# make
[[email protected] bacula-5.2.13]# make install
[[email protected] bacula-5.2.13]# cd /usr/local/bacula/etc/
[[email protected] etc]# egrep -v ‘^#|^$‘ bacula-fd.conf 
Director {##定义连接客户端FD的控制端
  Name = JD-dir
  Password = "dc5XEaySjV90PBfM0wCChirlEYkH4feUXjesKNHxdU2X"
  ##名字和密码是用来验证Server控制端的连接操作是否合法,需要与Server端的bacula-dir.conf中的Director一致.
}
Director {##定义允许连接客户端FD的监控段
  Name = JD-mon
  Password = "JMRJc5OtI7eqz+Fh3mbe6yQJig6R6wwTftuWX7+bXUAx"
  ##一样是验证,这是验证server端监控本地进程是否合法
  Monitor = yes##开启监控
}
FileDaemon {                         ##定义客户端的FD
  Name = xad-fd
  FDport = 9102                  #默认监听端口
  WorkingDirectory = /usr/local/bacula/opt/bacula/working
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20##一次能处理的并发作业数
}
Messages {
  Name = Standard
  director = xad-dir = all, !skipped, !restored
}

Server主机上:

[[email protected] bacula-5.2.13]# ./configure --prefix=/usr/local/bacula --with-mysql #需开启数据库
[[email protected] bacula-5.2.13]# make 
[[email protected] bacula-5.2.13]# make install

设置数据库和创建库和表

[[email protected] bacula-5.2.13]# cd /usr/local/bacula/etc/
执行以下三个文件,默认以数据库root用户且密码为空进行,倘若root有密码,则同时修改这三个文件中连接数据库的代码段:
......
if mysql -D ${db_name} $* -u root -p00000000 -f <<END-OF-DATA 
 #添加红色部分,-p后为root密码
......
[[email protected] etc]# ./grant_mysql_privileges	##开启远程连接
[[email protected] etc]#./create_mysql_database ##创建数据库
[[email protected] etc]#./make_mysql_tables	##创建数据表
进入mysql并查看是否有相关的数据信息
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bacula             |
| mysql              |
| performance_schema |
| test               |
| xad                |
+--------------------+
6 rows in set (0.00 sec)

Console端配置

[[email protected] etc]# egrep -v ‘^#|^$‘ bconsole.conf##编辑console端配置文件
Director {
  Name = JD-dir##Director端名称
  DIRport = 9101##console默认端口
  address = Dir-IP##Director端地址
  Password = "dc5XEaySjV90PBfM0wCChirlEYkH4feUXjesKNHxdU2X"
  ##与Director端验证是的密码,需与Director端一致
}

Director端配置

控制端配置文件共有10个逻辑段:

Director{...}      定义全局设置

Jobdefs{...}      定义默认执行任务

Job{...}        自定义一个备份或者恢复任务

Client{...}        定义要备份的主机地址

Fileset{...}      定义备份哪些数据,不备份哪些数据

Schedule{...}     定义备份时间策略

Storage{...}      定义数据的存储方式

Pool{...}        定义供Job使用的池属性

Catalog{...}      定义后台数据库

Messages{...}     定义发送日志报告和记录日志的位置

[[email protected] etc]# egrep -v ‘^#|^$‘ bacula-dir.conf 
Director {                    #定义全局配置 
  Name = JD-dir
  DIRport = 9101                # 默认端口
  QueryFile = "/usr/local/bacula/etc/query.sql"
  WorkingDirectory = "/usr/local/bacula/opt/bacula/working"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 1##一次能处理的最大并发数
  Password = "dc5XEaySjV90PBfM0wCChirlEYkH4feUXjesKNHxdU2X"        
 # 与Console验证的验证 password需一致
  Messages = Daemon##发送消息通知方式
}
JobDefs {##定义默认执行任务
  Name = "DefaultJob"
  Type = Backup##任务类型默认为备份,可选restore和verify
  Level = Incremental
  ##备份类型:Full(完全备份)、Incremental(增量备份)和Differential(差异备份)
 ##如果第一次没做完全备份,则先进行完全备份后再执行Incremental
  Client = xad-fd##与客户端主机FD配置文件中一致
  FileSet = "Full Set"##指定需要备份的数据策略,下文定义
  Schedule = "WeeklyCycle"##指定这个备份任务的执行时间策略,下文定义
  Storage = File###指定备份数据的存储路径与介质,下文定义
  Messages = Standard
  Pool = File##指定备份使用的pool属性,下文定义
  Priority = 10
  Write Bootstrap = "/usr/local/bacula/opt/bacula/working/%c.bsr"   #指定备份的引导信息
}
Job {
  Name = "BackupClient1"
  JobDefs = "DefaultJob"
}
Job {
  Name = "BackupCatalog"
  JobDefs = "DefaultJob"
  Level = Full
  FileSet="Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl <catalog-name>
  RunBeforeJob = "/usr/local/bacula/etc/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
  RunAfterJob  = "/usr/local/bacula/etc/delete_catalog_backup"
  Write Bootstrap = "/usr/local/bacula/opt/bacula/working/%n.bsr"
  Priority = 11                   # run after main backup
}
Job {##定义还原任务
  Name = "RestoreFiles"
  Type = Restore
  Client=xad-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##需要备份的数据的路径
  }
  Exclude {
    File = /usr/local/bacula/opt/bacula/working
    File = /tmp
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}
Schedule {##定义时间策略
  Name = "WeeklyCycle"
  Run = Full 1st sun at 23:05
  Run = Differential 2nd-5th sun at 23:05
  Run = Incremental mon-sat at 23:05
}
Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 23:10
}
FileSet {
  Name = "Catalog"
  Include {
    Options {
      signature = MD5
    }
    File = "/usr/local/bacula/opt/bacula/working/bacula.sql"
  }
}
Client {##定义客户端
  Name = xad-fd
  Address = IP-Client##客户端地址
  FDPort = 9102##客户端端口
  Catalog = MyCatalog##数据库存储信息方式
  Password = "dc5XEaySjV90PBfM0wCChirlEYkH4feUXjesKNHxdU2X"  ##与客户端一致
  File Retention = 30 days            # 数据循环时间,非备份文件存储时间
  Job Retention = 6 months            # 定义任务保持周期
  AutoPrune = yes                     # 任务超过保持周期是否自动删除
}
Storage {##定义存储设备
  Name = File
  Address = IP-SD                # 存储设备服务SD的地址
  SDPort = 9103   # 存储设备通信端口
  Password = "dc5XEaySjV90PBfM0wCChirlEYkH4feUXjesKNHxdU2X"  ##需与SD端配置一致
  Device = FileStorage   # 定义存储介质类型,需与SD端配置一致
  Media Type = File   # 介质类别,需与SD端配置一致
}
Catalog {##定义日志和数据设定
  Name = MyCatalog
  dbname = "bacula"; dbuser = "root"; dbpassword = "00000000"##库名和密码
}
Messages {##保存日志的格式和通知形式(邮件)
  Name = Standard
  mailcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = [email protected] = all, !skipped            
  operator = [email protected] = mount
  console = all, !skipped, !saved
  append = "/usr/local/bacula/opt/bacula/log/bacula.log" = all, !skipped    ##bacual运行日志
  catalog = all
}
Messages {
  Name = Daemon
  mailcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail = [email protected] = all, !skipped            
  console = all, !skipped, !saved
  append = "/usr/local/bacula/opt/bacula/log/bacula.log" = all, !skipped
}
Pool {
  Name = Default##定义池属性
  Pool Type = Backup
  Recycle = yes                       #重复使用
  AutoPrune = yes                     #自动清除过期备份文件
  Volume Retention = 365 days         # 备份文件保留时间
}
Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                      
  AutoPrune = yes                    
  Volume Retention = 365 days         
  Maximum Volume Bytes = 50G          # 最大备份文件的大小限制
  Maximum Volumes = 100               # 备份文件个数最大限制
}
Pool {
  Name = Scratch
  Pool Type = Backup
}
Console {##定义console
  Name = JD-mon
  Password = "JMRJc5OtI7eqz+Fh3mbe6yQJig6R6wwTftuWX7+bXUAx"  ##需与console一致
  CommandACL = status, .status
}

SD配置文件

[[email protected] etc]# egrep -v ‘^#|^$‘ bacula-sd.conf 
Storage {                             # 定义存储
  Name = JD-sd
  SDPort = 9103                   
  WorkingDirectory = "/usr/local/bacula/opt/bacula/working"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20
}
Director {##控制端信息
  Name = JD-dir
  Password = "dc5XEaySjV90PBfM0wCChirlEYkH4feUXjesKNHxdU2X"
}
Director {##监控端monitor信息
  Name = JD-mon
  Password = "JMRJc5OtI7eqz+Fh3mbe6yQJig6R6wwTftuWX7+bXUAx"
  Monitor = yes
}
Device {##定义设备介质
  Name = FileStorage
  Media Type = File
  Archive Device = /tmp##存储位置
  LabelMedia = yes;                   # 通过label命令建立卷文件
  Random Access = Yes;#随机访问
  AutomaticMount = yes;               #自动挂载使用
  RemovableMedia = no;#支持可移动设备
  AlwaysOpen = no;
}
Messages {
  Name = Standard
  director = JD-dir = all
}

启动方式

Server端:

[[email protected] etc]#/usr/local/bacula/etc/bacula-ctl-dir start
[[email protected] etc]#/usr/local/bacula/etc/bacula-ctl-sd start
[[email protected] ~]# netstat -tunlp | grep 910
tcp        0      0 0.0.0.0:9101            0.0.0.0:*               LISTEN      26967/bacula-dir    
tcp        0      0 0.0.0.0:9103            0.0.0.0:*               LISTEN      27002/bacula-sd

Client端:

[[email protected] etc]# /usr/local/bacula/etc/bacula-ctl-fd start
[[email protected] ~]# netstat -tunlp | grep 910
tcp        0      0 0.0.0.0:9102            0.0.0.0:*               LISTEN      22685/bacula-fd
时间: 2024-10-10 14:40:16

开源备份工具bacula的相关文章

企业级的开源备份工具Bacula之配置

一.Bacula配置 Bacula备份的主要配置项目存放在bacula-dir.conf文件中,该文件中的配置项包含以下内容. Jobdefs:默认执行任务 Job:自定义一个备份或恢复任务 Fileset:定义备份那些数据,不备份那些数据 Schedule:定义备份时间策略 Pool:定义供Job使用的池属性 Client:定义要备份的主机地址 Storange:定义数据的存储方式 Messages:定义发送日子报告和记录日志的位置 各项目定义的名称会相互关联,如下图所示. 3.1 bacul

企业级的开源备份工具之磁盘柜存储配置

一.iscsi网络存储 1.1 配置FreeNAS 考虑专业的磁盘柜价格不菲,而使用服务器的方式一方面磁盘容量有限,另一方面IO的性能也很难保障.FreeNAS是一套免费的NAS服务器,它能将一部普通PC变成网络存储服务器.用户可通过Windows.Macs.FTP.SSH 及网络文件系统 (NFS) 来访问存储服务器. 我们通过它来组建符合企业使用的备份存储设备,该系统具体的安装步骤可参考相关资源.这里通过启用iscsi功能实现网络备份存储,相关设置如下图. 1.2 配置iscsi客户端 iS

开源备份软件bacula安装记录--含备份-恢复演练

公司原来的备份机器用的是oracle-linux 5.7 运行的不是很稳定,经常出现死机,新装了一个centos6.5, 准备使用bacula来对数据进行备份,在这里记录一下安装过错,备忘. 操作系统:centos6.5 1.安装mysql 用yum安装 yum install mysql mysql-server mysql-devel 这里要注意的是一定要安装mysql-devel,否则在等下configure bacula的时候会报找不到mysql.h文件--这里折腾了我好久,差点想去编译

Linux 和类 Unix 系统上5个最佳开源备份工具

转载:http://linux.cn/article-4623-weixin.html#rd?sukey=cbbc36a2500a2e6cb7678c4d38b691a9fa7403b259f898ef85fa4620177de89e521da2071ebd494c71482c97449337f9 一个好的备份最基本的目的就是为了能够从一些错误中恢复: 人为的失误 磁盘阵列或是硬盘故障 文件系统崩溃 数据中心被破坏等等. 所以,我为大家罗列了一些开源的软件备份工具. 当为一个企业选择备份工具的时

开源备份软件bacula安装记录--包括备份-恢复演练

该公司原先使用的备用机oracle-linux 5.7 不是很稳定执行.经常死机,新安装centos6.5, 即用bacula要备份的数据.在这里,有关安装故障记录,MEMO. 操作系统:centos6.5 1.安装mysql 用yum安装 yum install mysql mysql-server mysql-devel 这里要注意的是一定要安装mysql-devel,否则在等下configure bacula的时候会报找不到mysql.h文件--这里折腾了我好久.差点想去编译安装mysql

MySQL 5.5 备份工具LVM

MySQL的第一款备份工具mysqldump,我们在上篇文章中已经和大家聊过,如果大家还有疑惑,请点击mysqldump MySQL的第二款备份工具lvm快照,那么今天我们就聊聊它lvm快照卷温备 mysqldump能够实现对InnoDB存储引擎实现热备,但是却无法实现对MyISAM引擎进行热备: 而今天将要和大家介绍lvm能够实现对MyISAM引擎实现几乎热备 使用lvm快照进行mysql的备份时,需要满足以下条件: 数据文件要在逻辑卷上 此逻辑卷所在卷组必须有足够空间使用快照卷 数据文件和事

【CentOS】部署开源企业级Linux备份工具—BackupPC

BackupPC安装所需的主要的安装包下载地址:http://pan.baidu.com/s/1bnCGCY7 (BackupPC的版本为3.2.1) (该版本的BackupPC是支持中文的,BackupPC配置好后,可以在其Web页面设置其显示语言即可) 1.添加backuppc组及用户 groupadd   backuppc useradd   -g   backuppc   backuppc 2.安装httpd.mod_perl及BackupPC yum   install   httpd

超全Linux备份工具集合,满足你的所有需要!

导读 个人计算机或者服务器上的备份对于防止数据丢失很重要.系统管理员每天需要处理大量的企业级数据,甚至个人计算机上的数据,所以要深入了解不同的备份工具.我们在本文中将介绍11款一流的备份工具,供你在Linux服务器或系统上使用. 经常备份计算机上的数据是个好的做法,它可以手动完成,也可以设置成自动执行.许多备份工具拥有不同的功能特性,让用户可以配置备份类型.备份时间.备份对象.将备份活动记入日志及执行更多操作. 1.Rsync 这是一款在Linux用户当中颇受欢迎的命令行备份工具,尤其受到系统管

Linux备份工具收集

1.Rsync 这是一款在Linux用户当中颇受欢迎的命令行备份工具,尤其受到系统管理员的欢迎.它拥有丰富的功能,包括增量备份.更新整个目录树和文件系统.本地备份及远程备份,以及保留文件权限.所有权.链接及更多对象. 它还有一个名为Grsync的图形化用户界面,不过rsync的一个优点在于,经验丰富的系统管理员可以在命令行上,使用脚本和计划任务,实现备份任务自动化. 2.Fwbackups 这是一款跨平台的免费开源软件,功能丰富.用户可以贡献代码,促进这款软件的开发,或者参与测试工作.它有一个直