如何使用bacula备份
2024-08-28 00:08:15
供稿:网友
手头有三台机器,为了安全,就打算做一个网络备份,让这三台机器互相备份一些重要
文档。上网逛了一会,发现bacula(www.bacula.org)挺符合自己的要求。
bacula采用模块化设计,采用c/s构架,理论上可以把任意n台主机的资料备份到任意n台
中,而你不需要在每台机器上都写一个配置文件控制他们运作,所有主要的工作都在一
台director上控制。登陆上director你就可以知道什么备份正在运行,什么备份成功了
,什么备份失败了,所有的log也会集中到你指定的地方,让管理工作更简单一点。恢复
的时候也很简单,简单运行几个命令你就可以把指定的备份恢复。支持完全备份,差异
备份,增量备份;支持把备份写到硬盘文件中,也支持写到磁带中。支持平台相当多,
设置包括win平台(备份win,还不支持备份到win)。当然也有一些缺点,比如对并发备
份支持未经彻底测试,作者宣称最好不要尝试,除非你自己经过测试。还有一点就是文
档中没有一个quick start。。。。文档太详细了点,没有点耐心读不完。。。。
1,前期准备
bacula有三个模块组成。一个是Director,用于指挥整个系统运行,job schedule,通知
另外两个模块工作。一个是Storage Daemon,它是存储端,负责把网络中传来的数据备
份到本机,恢复的时候负责把数据传出去。最后一个是File Daemon,备份时把文件传出
,恢复时接受数据并恢复。其实上面的三个模块并不能让bacula运行,另外一个模块是
数据库模块。这个模块可以通过SQLite(编译进bacula),也可以使用MySql和PostgreS
ql,作者推荐的是mysql。还需要一些第三方库才能编译:GZIP和Readline。文档中没有
说明,但其实还需要另外一个软件才能保证正常运行:ntp。因为差异备份和增量备份都
依赖于文件修改时间来决定是否备份。单机备份问题不大,网络备份就需要考虑各个主
机的时间差异了。所以我推荐所有主机每天运行两次ntpdate来调准时间。如果你在sjtu
网络里面,可以使用dns.sjtu.edu.cn来调校时间。
如果你使用的是磁带机备份,还需要检查一下你的磁带机是否被支持。而且最好去阅读
文档中的Understanding Pools, Volumes and Labels一节。否则配置的时候你会搞得晕
乎乎的。
2,编译
编译过程很简单,文档也很详细,就不具体介绍了。注意一点是被备份机器上可以使用-
-enable-client-only编译。
3,数据库建立
下面说说mysql的建立过程。首先在代码根目录中
cd src/cats/
./grant_mysql_privileges
./create_mysql_database
./make_mysql_tables
如果mysql不是在本机上,可以增加-h参数指定。默认采用空密码的root用户,可以用-p
参数使其采用密码验证。如果要采用其它用户就只能修改脚本了,很简单的。