bacula 的使用

1
下载bacula
http://sourceforge.net/projects/bacula/files/bacula/5.2.13/bacula-5.2.13.tar.gz/download
2
在bacula服务器端安装bacula:
# tar zxvf bacula-5.0.
# tar zxvf bacula-5.0.1.tar.gz
# cd bacula-5.0.1
# ./configure --prefix=/opt/bacula --enable-client-only
# make
# make install


3
在bacula客户端安装bacula
# tar zxvf bacula-5.0.1.tar.gz
# cd bacula-5.0.1
# ./configure --prefix=/opt/bacula --enable-client-only
# make
# make install


4初始化Mysql数据库
在baculaServer上安装完bacula后,还需要创建bacula对应的Mysql数据库以及访问数据库的授权,好在bacula已经为用户准备好了这样的脚本,接下来只要在bacula服务器端上执行如下脚本即可。
打开这三个文件:

if mysql -D ${db_name} $*  -f <<END-OF-DATA
改为
if mysql -D ${db_name} $* -p -f <<END-OF-DATA
然后执行下面的命令
#cd /opt/bacula/etc
# ./grant_mysql_privileges
# ./create_mysql_database
Creation of bacula database succeeded.


# ./make_mysql_tables
Creation of Bacula MySQL tables succeeded.

在执行的过程中会提示输入root的密码


5

安装好后:
打开bacula:
/opt/bacula/sbin/bacula start
关闭bacula
/opt/bacula/sbin/bacula stop
访问控制台:
/opt/bacula/sbin/bconsole

在操作前,需要先配置

配置文件的路径为:

/opt/bacula/etc

里面有三个配置文件:

bacula-dir.conf

bacula-sd.conf

bconsole.conf

分别为director的配置文件,storage的配置文件

另外一个

bacula-fd.conf

是备份服务器的配置文件

首先打开文件bconsole.conf,设置IP,注意,IP不要用localhost和127.0.0.1

然后打开

bacula-sd.conf

修改client的ip为备份服务器的IP

修改storage的ip为服务器的ip

然后吧备份服务器和控制服务器的防火墙的9101,9102,9103的端口开启,或者关闭iptables

配置文件里面的配置路径:/opt/bacula/var/bacula/working/  和/webdata

查看是否存在,不存在创建,如果不存在会报错(备份服务器和控制服务器都要创建)

上面创建的文件,设置权限为777,如果不能写入就会报错的。

备份文件的路径为:

FileSet { #定义一个名为dbfs的备份资源,也就是指定需要备份哪些数据,需要排除哪些数据等,可以指定多个FileSet
Name = dbfs
Include {
Options {
signature = MD5; Compression=GZIP; } #表示使用MD5签名并压缩
File = /gg #指定客户端FD需要备份的文件目录
}

中,file指向的路径,此例子为/gg

设置好了上面的信息,就可以重启bacula,然后进行备份了

6

打开bacula:
/opt/bacula/sbin/bacula start
关闭bacula
/opt/bacula/sbin/bacula stop
访问控制台:
/opt/bacula/sbin/bconsole

注意,备份端和控制端都要打开bacula

在控制端进入控制台,/opt/bacula/sbin/bconsole

6.1完整备份和还原操作

/opt/bacula/sbin/bconsole

Enter a period to cancel a command    //

*                         //这里填写label

执行后,出现下面文字:

Enter new Volume name:    //这里随便填写一个卷组名字,指定后,会在dir文件里面storage里面的device 对应到sd文件中的device的Archive Device中指定的路径中生成

譬如dir文件中

Storage{

Name = dbsd

Address = 192.168.1.188

Device = dbdev

}

文件bacula-sd.conf

Device{

Name = dbdev

Archive Device = /webdata

}

卷组名字填写后,就会在webdata下面生成一个相应的文件。用来存储

填写名字为cicro4

回车

如果创建成功,会出现一些列的信息

3906 File device "dbdev" is always mounted

下面我们就要用run命令进行备份了

*run

下面的就是选择job,因为我们的bacula-dir.conf里面有多个job

Client1 为增量备份

Client为差异备份

BackupCatalog为完全备份

RestoreFiles为还原备份

选择2,3 都会做完全备份,因为差异备份的第一次备份也是完全备份

选择后回车

OK to run?   //填写yes

下面会出现JobId

这个就是刚才备份的jobid

通过这个id可以查看备份的状态

执行:

*status

1

如果备份还在执行,会提示这个jobid is running

住一回可以重新查看

*status

1

就会看到jobid对应的各个状态

依次为:

jobid,备份方式(Full,Incr,Diff 三种),文件个数,文件大小,状态,完成时间,job名字

6.2

上面的执行的是增量备份的第一次,所以是完整备份,下面进行差异备份

依次执行命令

*run

2

*status

1

在执行的过程中,可能会出现错误:

is waiting for an appendable volume bacula

这是因为在dir文件中设置的

Job { #自定义一个备份任务
Name = "Client1" #备份任务名称
Client = dbfd #指定要备份的客户端主机,“dbfd”在后面Client逻辑段中进行定义
Level = Incremental #定义备份的级别,Incremental为增量备份。Level的取值#可为Full(完全备份)、Incremental(增量备份)和Differential(差异备份),如果第一#次没做完全备份,则先进行完全备份后再执行Incremental
Type = Backup #定义Job的类型,“backup”为备份任务,可选的类型还有restore和verify等
FileSet = dbfs #指定要备份的客户端数据,“dbfs”在后面FileSet逻辑段中进行定义
Schedule = dbscd #指定这个备份任务的执行时间策略,“dbscd”在后面的Schedule逻辑段中进行了定义
Storage = dbsd #指定备份数据的存储路径与介质,“dbsd” 在后面的Storage逻辑段中进行定义
Messages = Standard
Pool = dbpool #指定备份使用的pool属性,“dbpool”在后面的Pool逻辑段中进行定义。
Write Bootstrap = "/opt/bacula/var/bacula/working/Client2.bsr" #指定备份的引导信息路径
}

Pool { #定义供Job任务使用的池属性信息,例如,设定备份文件过期时间、是否覆盖过期的备份数据、是否自动清除过期备份等
Name = dbpool
Pool Type = Backup
Recycle = yes #重复使用
AutoPrune = yes #表示自动清除过期备份文件
Volume Retention = 7 days #指定备份文件保留的时间
Label Format ="db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}" #设定备份文件的命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139
Maximum Volumes = 7 #设置最多保存多少个备份文件
Recycle Current Volume = yes #表示可以使用最近过期的备份文件来存储新备份
Maximum Volume Jobs = 1 #表示每次执行备份任务创建一个备份文件
}

所以定义label后选择要选择dbpool,如果dbpool中的空白卷不够用就会爆上面的错误

在dbpool中新建一个卷就可以了



另外要注意:

Pool { #定义供Job任务使用的池属性信息,例如,设定备份文件过期时间、是否覆盖过期的备份数据、是否自动清除过期备份等
Name = dbpool
Pool Type = Backup
Recycle = yes #重复使用
AutoPrune = yes #表示自动清除过期备份文件
Volume Retention = 7 days #指定备份文件保留的时间
Label Format ="db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}" #设定备份文件的命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139
Maximum Volumes = 7 #设置最多保存多少个备份文件
Recycle Current Volume = yes #表示可以使用最近过期的备份文件来存储新备份
Maximum Volume Jobs = 1 #表示每次执行备份任务创建一个备份文件
}

pool中定义了备份的时间和备份备份个数


用的时间长了,就会出现很多的大文件

清空的方法:在配置完数据库后,把数据库备份一下,

然后再清空所有的时候把数据库还原成原来的数据库文件

然后吧pool对应的文件夹里面的所有文件清空就可以了。


7还原

status查看状态

*restore

select Item:(1-13):3

Enter jobId,comma separated,to restore :   //填写想要恢复的jobid,如果是差异备份,请填写完整备份和差异备份,譬如:69,72

cwd is:/

$mark cicro  (mark *)

选择client

$done

就可以了

其中还原后的备份放到的位置为:

Job { #定义一个还原任务
Name = "RestoreFiles"
Type = Restore #定义Job的类型为“Restore ”,即恢复数据
Client=dbfd
FileSet=dbfs
Storage = dbsd
Pool = dbpool
Messages = Standard
Where = /tmp/bacula-restores #指定默认恢复数据到这个路径
}

在restore中定义的where指定的路径,执行还原后,在备份服务器上的这个路径会显示备份文件。







其他参考地址:
http://abian.blog.51cto.com/751059/1087695


配置文件:

bacula-dir.conf:

Director { #定义bacula的全局配置
Name = f10-64-build-dir
DIRport = 9101 #定义Director的监听端口
QueryFile = "/opt/bacula/etc/query.sql"
WorkingDirectory = "/opt/bacula/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1 #定义一次能处理的最大并发数

#验证密码,这个密码必须与bconsole.conf文件中对应的Director逻辑段密码相同
Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"

#定义日志输出方式,“Daemon”在下面的Messages逻辑段中进行了定义
Messages = Daemon
}

Job { #自定义一个备份任务
Name = "Client1" #备份任务名称
Client = dbfd #指定要备份的客户端主机,“dbfd”在后面Client逻辑段中进行定义
Level = Incremental #定义备份的级别,Incremental为增量备份。Level的取值#可为Full(完全备份)、Incremental(增量备份)和Differential(差异备份),如果第一#次没做完全备份,则先进行完全备份后再执行Incremental
Type = Backup #定义Job的类型,“backup”为备份任务,可选的类型还有restore和verify等
FileSet = dbfs #指定要备份的客户端数据,“dbfs”在后面FileSet逻辑段中进行定义
Schedule = dbscd #指定这个备份任务的执行时间策略,“dbscd”在后面的Schedule逻辑段中进行了定义
Storage = dbsd #指定备份数据的存储路径与介质,“dbsd” 在后面的Storage逻辑段中进行定义
Messages = Standard
Pool = dbpool #指定备份使用的pool属性,“dbpool”在后面的Pool逻辑段中进行定义。
Write Bootstrap = "/opt/bacula/var/bacula/working/Client2.bsr" #指定备份的引导信息路径
}

Job { #定义一个名为Client的差异备份的任务
Name = "Client"
Type = Backup
FileSet = dbfs
Schedule = dbscd
Storage = dbsd
Messages = Standard
Pool = dbpool
Client = dbfd
Level = Differential #指定备份级别为差异备份
Write Bootstrap = "/opt/bacula/var/bacula/working/Client1.bsr"
}

Job { #定义一个名为BackupCatalog的完全备份任务
Name = "BackupCatalog-full"
Type = Backup
Level = Full #指定备份级别为完全备份
Client = dbfd
FileSet="dbfs"
Schedule = "dbscd"
Pool = dbpool
Storage = dbsd
Messages = Standard
RunBeforeJob = "/opt/bacula/etc/make_catalog_backup bacula bacula"
RunAfterJob = "/opt/bacula/etc/delete_catalog_backup"
Write Bootstrap = "/opt/var/bacula/working/%c.bsr"
}

Job { #定义一个还原任务
Name = "RestoreFiles"
Type = Restore #定义Job的类型为“Restore ”,即恢复数据
Client=dbfd
FileSet=dbfs
Storage = dbsd
Pool = dbpool
Messages = Standard
Where = /tmp/bacula-restores #指定默认恢复数据到这个路径
}

FileSet { #定义一个名为dbfs的备份资源,也就是指定需要备份哪些数据,需要排除哪些数据等,可以指定多个FileSet
Name = dbfs
Include {
Options {
signature = MD5; Compression=GZIP; } #表示使用MD5签名并压缩
File = /gg #指定客户端FD需要备份的文件目录
}

Exclude { #通过Exclude排除不需要备份的文件或者目录,可根据具体情况修改
File = /opt/bacula/var/bacula/working
File = /tmp
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}

Schedule { #定义一个名为dbscd的备份任务调度策略
Name = dbscd
Run = Full 1st sun at 23:05 #第一周的周日晚23:05分进行完全备份
Run = Differential 2nd-5th sun at 23:05 #第2~5周的周日晚23:05进行差异备份
Run = Incremental mon-sat at 23:05 #所有周一至周六晚23:05分进行增量备份
}

FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = /opt/bacula/var/bacula/working/bacula.sql
}
}

Client { #Client用来定义备份哪个客户端FD的数据
Name = dbfd #Clinet的名称,可以在前面的Job中调用
Address = 192.168.1.215 #要备份的客户端FD主机的IP地址
FDPort = 9102 #与客户端FD通信的端口
Catalog = MyCatalog #使用哪个数据库存储信息,“MyCatalog”在后面的MyCatalog逻辑段中进行定义
Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t" #Director端与客户端FD的验证密码,这个值必须与客户端FD配置文件bacula-fd.conf中密码相同
File Retention = 30 days #指定保存在数据库中的记录多久循环一次,这里是30天,只影响数据库中的记录不影响备份的文件
Job Retention = 6 months #指定Job的保持周期,应该大于File Retention指定的值
AutoPrune = yes #当达到指定的保持周期时,是否自动删除数据库中的记录,yes表示自动清除过期的Job
}

Client {
Name = dbfd1
Address = 192.168.1.215
FDPort = 9102
Catalog = MyCatalog
Password = "Wr8lj3q51PgZ21U2FSaTXICYhLmQkT1XhHbm8a6/j8Bz"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

Storage { # Storage用来定义将客户端的数据备份到哪个存储设备上
Name = dbsd
Address = 192.168.1.216 #指定存储端SD的IP地址
SDPort = 9103 #指定存储端SD通信的端口
Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t" #Director端与存储端SD的验证密码,这个值必须与存储端SD配置文件bacula-sd.conf中Director逻辑段密码相同
Device = dbdev #指定数据备份的存储介质,必须与存储端(这里是192.168.12.188)的bacula-sd.conf配置文件中的“Device” 逻辑段的“Name”项名称相同
Media Type = File #指定存储介质的类别,必须与存储端SD(这里是192.168.12.188)的bacula-sd.conf配置文件中的“Device” 逻辑段的“Media Type”项名称相同
}

Catalog { # Catalog逻辑段用来定义关于日志和数据库设定
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "" #指定库名、用户名和密码
}

Messages { # Messages逻辑段用来设定Director端如何保存日志,以及日志的保存格式,可以将日志信息发送到管理员邮箱,前提是必须开启sendmail服务
Name = Standard
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = dba.gao@gmail.com = all, !skipped
operator = exitgogo@126.com = mount
console = all, !skipped, !saved
append = "/opt/bacula/log/bacula.log" = all, !skipped #定义bacula的运行日志
append ="/opt/bacula/log/bacula.err.log" = error,warning, fatal #定义bacula的错误日志
catalog = all
}

Messages { #定义了一个名为Daemon的Messages逻辑段,“Daemon”已经在前面进行了引用
Name = Daemon
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = exitgogo@126.com = all, !skipped
console = all, !skipped, !saved
append = "/opt/bacula/log/bacula_demo.log" = all, !skipped
}

Pool { #定义供Job任务使用的池属性信息,例如,设定备份文件过期时间、是否覆盖过期的备份数据、是否自动清除过期备份等
Name = dbpool
Pool Type = Backup
Recycle = yes #重复使用
AutoPrune = yes #表示自动清除过期备份文件
Volume Retention = 7 days #指定备份文件保留的时间
Label Format ="db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}" #设定备份文件的命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139
Maximum Volumes = 3 #设置最多保存多少个备份文件
Recycle Current Volume = yes #表示可以使用最近过期的备份文件来存储新备份
Maximum Volume Jobs = 1 #表示每次执行备份任务创建一个备份文件
}

Console { #限定Console利用tray-monitor获得Director的状态信息
Name = f10-64-build-mon
Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"
CommandACL = status, .status
}



bacula-fd.conf:

Director { #定义一个允许连接FD的控制端
Name = f10-64-build-dir #这里的“Name”值必须和Director端配置文件bacula-dir.conf中Director逻辑段名称相同
Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t" #这里的“Password”值必须和Director端配置文件bacula-dir.conf中Client逻辑段密码相同
}

Director { #定义一个允许连接FD的监控端
Name = f10-64-build-mon
Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"
Monitor = yes
}

FileDaemon { #定义一个FD端
Name = localhost.localdomain-fd
FDport = 9102 #监控端口
WorkingDirectory = /opt/bacula/var/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20 #定义一次能处理的并发作业数
}

Messages { #定义一个用于FD端的Messages
Name = Standard
director = localhost.localdomain-dir = all, !skipped, !restored
}



bacula-sd.conf:

Storage { #定义存储,本例中是f10-64-build-sd
Name = f10-64-build-sd #定义存储名称
SDPort = 9103 #监听端口
WorkingDirectory = "/opt/bacula/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}

Director { #定义一个控制StorageDaemon的Director
Name = f10-64-build-dir #这里的“Name”值必须和Director端配置文件bacula-dir.conf中Director逻辑段名称相同
Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t" #这里的“Password”值必须和Director端配置文件bacula-dir.conf中Storage逻辑段密码相同
}

Director { #定义一个监控端的Director
Name = f10-64-build-mon #这里的“Name”值必须和Director端配置文件bacula-dir.conf中Console逻辑段名称相同
Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap" #这里的“Password”值必须和Director端配置文件bacula-dir.conf中Console逻辑段密码相同
Monitor = yes
}

Device { #定义Device
Name = dbdev #定义Device的名称,这个名称在Director端配置文件bacula-dir.conf中的Storage逻辑段Device项中被引用
Media Type = File #指定存储介质的类型,File表示使用文件系统存储
Archive Device = /webdata #Archive Device用来指定备份存储的介质,可以是cd、dvd、tap等,这里是将备份的文件保存的/webdata目录下
LabelMedia = yes; #通过Label命令来建立卷文件
Random Access = yes; #设置是否采用随机访问存储介质,这里选择yes
AutomaticMount = yes; #表示当存储设备打开时,是否自动使用它,这选择yes
RemovableMedia = no; #是否支持可移动的设备,如tap或cd,这里选择no
AlwaysOpen = no; #是否确保tap设备总是可用,这里没有使用tap设备,因此设置为no
}

Messages { #为存储端SD定义一个日志或消息处理机制
Name = Standard
director = f10-64-build-dir = all
}



bconsole.conf:

#
# Bacula User Agent (or Console) Configuration File
#

Director {
  Name = Terry-dir
  DIRport = 9101
  address = 192.168.1.216
  Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值