企业级系统备份 BackupPC的配置与使用手册

运维 系统运维
这份指南将会协助你运用 CentOS testing 软件库内的 RPM 来设置 BackupPC。它不会详细地解释 BackupPC 所支持的一切设置。它亦会假设你会设置 BackupPC 通过 rsync 来进行备份。

这份指南将会协助你运用 CentOS testing 软件库内的 RPM 来设置 BackupPC。它不会详细地解释 BackupPC 所支持的一切设置。它亦会假设你会设置 BackupPC 通过 rsync 来进行备份。BackupPC 可支持 archive、tar、smb 及 rsyncd 的备份,但这份指南只会专注采用 rsync 的 Linux 主机。BackupPC 拥有论充足的文档关于设置方面的选项,这些指引亦收藏在它的网页界面中。另外,BackupPC 应该驻于一台专用的服务器上,因为 Apache 必须以系统上 BackupPC 用户的身份来执行,而这样会影响网页服务器的正常运作。

系统:CentOS 5.x

参考文件
[ http://backuppc.sourceforge.net/ ]

设置软件库

首先要做的事情就是将 CentOS testing 软件库连同 yum-priorities 插件一并安装。

 # cd /etc/yum.repos.d
# wget http://dev.centos.org/centos/5/CentOS-Testing.repo
# yum install yum-priorities

请依从 wiki 内有关设置 [http://wiki.centos.org/zh/PackageManagement/Yum/Priorities?highlight=(yum)|(priorities)|yum-priorities] 的指引。如果你安装了 RPMFroge 的软件库,你必须确定所有 CentOS Base 项目的优先次序是 1,RPMForge 项目的优先次序是 2,而 CentOS testing 软件库的优先次序是 3。如果你并未安装 RPMForge 软件库,所有 Perl 组件将会下载自 testing 软件库,否则,它们将会来自 RPMForge。要设置 RPM 软件库,请依从 wiki 内有关 [软件库]的指引。

安装 BackupPC

接下来,请安装 BackupPC 的 RPM、Apache、及 mod_perl。Perl 所依赖的一切将会自动被收集起来。

# yum --enablerepo=c5-testing install backuppc httpd mod_perl

设置 Apache

如上述所提及,假若要一切正常地与 CGI 及 mod_perl 运作,Apache 的执行身份必须是安装 RPM 时在系统上所创建的 BackupPC 用户。请你现在就把合适的值设于 httpd.conf 内。

# vim /etc/httpd/conf/httpd.conf
## 更改 User apache 为 User backuppc
User backuppc
Servername backuppc.domain.com:80

存储并离开文件,然后更改被创建于 conf.d 目录下的 backuppc.conf 文件。

# vim /etc/httpd/conf.d/backuppc.conf
## 将 Allow from 127.0.0.1 改为 all
Allow from all

存储并离开这个文件,然后创建你将会用来访问网页界面的用户及密码。

# htpasswd -c /var/lib/backuppc/passwd/htpasswd your_user
New password: your_password
Re-type new password: your_password
Adding password for user your_user

最后,引导 Apache 并设置它于开机时引导。然后浏览你的机器并确定 Apache 可以派出测试页面。

# service httpd start
# chkconfig httpd on

请浏览 http://你的服务器 并确定 Apache 能正常运作。

BackupPC 服务器设置

初次设置时,你必须在命令行上编辑数个参数,额外的你可以通过命令行或网页界面来完成。请打开 BackupPC 的主要配置文件,然后设置下列参数。TopDir 这个路径就是放置实际备份的地地。它的缺省值是 /var/lib/backuppc。我利用一个加密的分区来作备份,因此我的路径是 /srv/backuppc。请按你的需要修改它。

 # vim /etc/BackupPC/config.pl
## BackupPC 缺省的传输方法。
$Conf{XferMethod} = 'rsync';
## 备份数据存放位置的路径。
$Conf{TopDir}      = '/var/lib/backuppc';
## init.d 内用来引导服务器的路径。
$Conf{ServerInitdPath} = '/etc/init.d/backuppc';
$Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start';
## 你以 htpasswd 创建获授权的用户。
$Conf{CgiAdminUsers}     = 'your_user';

设置 BackupPC Sudo

backuppc 这位用户须要拥有 sudo 权限来执行 gtar 及 tar 的指令。否则,BackupPC 便不能正确地运作。Sudo 应该已被安装在你的系统上,因此你可以通过 visudo 这个指令来作出所需的修改。

# visudo
## 注释掉 Defaults requiretty
## 加入以下两行。
Defaults !lecture
backuppc ALL=NOPASSWD:/bin/gtar,/bin/tar

存储并离开这个文件,然后重新引导 Apache,引导 BackupPC 并设置它在开机时引导。

# service httpd restart
# service backuppc start
# chkconfig backuppc on

请打开你的浏览器并进到位于 http://你的服务器/backuppc 的 BackupPC 网页界面。你须要以先前创建的用户及密码来登录,然后你便会看见一版关于 BackupPC 服务器一般信息的页面。要不然,请重复你的步骤并确定 Apache 及 BackupPC 的设置皆正确。

BackupPC SSH 金钥

由于我们会专注以 rsync 进行备份,你也许会想为 backuppc 进程创建无须密码的金钥,让它能远程连接到需要备份的主机上。请以 root 的身份在 /var/lib/backuppc 内置立隐藏的 SSH 目录,继而修改权限。

# cd /var/lib/backuppc
# mkdir .ssh
# chown backuppc.backuppc .ssh
# chmod 700 .ssh

接着,请改为 backuppc 这个用户。你须要指定一个指令壳,因为 backuppc 这位用户缺省是没有指令壳的。然后请利用 ssh-keygen 创建没有密码的 SSH 金钥。

# su -s /bin/bash backuppc
bash-3.2$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/var/lib/backuppc/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/backuppc/.ssh/id_dsa.
Your public key has been saved in /var/lib/backuppc/.ssh/id_dsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx backuppc@host.domain.name

#p#

复制服务器金钥到客户端

你必须将你服务器上创建的金钥复制到每一台要被备份的客户端里。就此,请继续上一步,在服务器上以 backuppc 这个用户的身份执行 ssh-copy-id 这个指令。
bash-3.2$ ssh-copy-id -i .ssh/id_dsa.pub root@host_to_backup

它应该会将金钥复制到主机里,并通过 SSH 把你登录该台机器。

设置客户端

BackupPC 的基础

在你开始使用网页界面前,让我们为应用于各主机的设置及选项提供一些基本的解释。我所阅读的其它指南在这方面都令我不知所措。你刚才所编辑的主要配置文件,位于 /etc/BackupPC/config.pl,藏有 BackupPC 的所有缺省值。这个配置文件可以在命令行上编辑,也可以通过为每个选项提供文档的图像界面来修改。你登录网面界面时,在左边可看见 Edit Config 这个页签。当你点击它时,你其实在编辑 /etc/BackupPC/config.pl 这个文件。直至你阅读文档为止,请不要改动任何缺省的选项,否则你可能很快便会发现一个失效的备份系统。

虽然主要配置文件提供所有缺省值,你亦可以为个别主机更改这些设置。当你在网页界面上加入一台主机后,你为该主机所加入的任何设置值将会取代缺省值。这样做亦会创建一个独立的文件,/etc/BackupPC/pc/主机名称.pl。这个文件藏有所有曾经被修改,或与 /etc/BackupPC/config.pl 内有差别的设置值。譬如说,这些文件的内容会是你为某主机设置在备份时要包括或排除的目录。

除非你将会在所有主机上备份相同的目录,否则你在创建了一台主机后便应利用此功能来设置目录。这一步可以通过 Xfer 页签上的 RsyncShareName 来完成。紧随这个设置之下是 BackupFilesExclude 选项,让你将 /var/cache 等目录排除于备份之外。

在 BakcupSettings 这个主页签里,你会找到 DumpPreUserCmd。它容许你指定任何脚本在在进行目录的 rsync 前被执行。举个例说,假如你需要令数据库转储然后再备份,你可以在这个脚本里指定。SourceForge 上已然备有 AutoMySQLBackup,所以它在下一部份会有所描述。

DumPostUserCmd 容许你在备份后执行一个指令,而 DumpPreShareCmd 及 DumpPostShareCmd 容许你在分享一个备份之前及之后执行脚本。注:很多人似乎被这些设置里的参数所混淆。你不能将这些字段视作命令行或指令壳。指令壳语法在这里不会生效,因此你如果需要执行多个指令或脚本,请将它们放进客户端的一个脚本里,让它们一个接一个地被执行。

最后,你可以在 Schedule 这个页签设置如何进行完整及渐进式的备份。你可以在 Edit Config 将它设置为缺省级别,又或者为个别主机进行设置。缺省值是保留一套完整备份及六套渐进式的备份。这样你便会拥有一个星期的备份。FullPeriod 的值是 6.97,意思即是每 7 日便进行一次完整备份。IncrPeriod 的值是 0.97,意思即是每日都进行渐进式备份。IncrKeepCnt 的值是 6,也就是说 6 日渐进式备份后,就有一日是完整备份。你也可设置 BlackoutPeriods,即是你不想进行备份的日子。这里的每个设置在文档内都有所解释,因此这详阅。

在网页界面加入客户端

接下来,请通过网页界面加进客户端及它的一切设置。请点击 Edit Hosts 页签,继而按 Add 按钮。填入你想备份的主机名称,然后在 User 部份之下,以 backuppc 作为用户。这必须是 backuppc,因为备份是已这位用户来引导的。其它设置都不行。完成后,请按顶部的 save 按钮。当你点击位于左面的 Host Summary 连结时,你应该能看见你的新主机。要开始改动主机的设置,请点击机名,然后一个新的本地将会在顶部打开。请点击在主机名称之下、最左上方的 Edit Config。

由此点起,你所做的一切修改将会取代缺省的设置值,并会被存储到 /etc/BackupPC/pc/主机名称.pl 这个文件内。请点击 Xfer 这个按钮,然后开始在 RsyncShareName 下加入目录。在它以下的 Include/Exclude 本地内,你可以将任何要排除的东西加进 BackupFilesExclude。完成后,请确定会已点击在最顶部的 save。加入一台主机大致上便是这样。如果你选择一台主机,你可以手动式地开始及终止备份来检查操作是否正常。

根据缺省值,BackupPC 会日以继夜地、每小时醒来检查是否有主机被排序作备份。要更改这个特性,请进到 Server configuration 页签下的 EditConfig 部份。请更改 WakeupScahedule 来迎合你的需要。

将数据库备份

要在所备份的主机内包含数据库的转储,你有两个选择。第一,你可以写一个在主机进行备份前执行的脚本。第二,你可以利用 SourceForge 上的 AutoMySQLBackup 脚本计划来转储你的 MySQL 数据库。通过在脚本上作出简单的修改,你可以轻易地令它支持 PostgreSQL 数据库。开始时,请从 [http://sourceforge.net/projects/automysqlbackup|SourceForge] 下载脚本。请将这个脚本复制到要备份的主机,将它于在 /usr/local/bin 等位置。我一般会将该脚本换名来反映它所转储的主机名称。

这一步并非必须,它只是较有逻辑而己。然而,你必须确定这个脚本是可执行的。

# scp automysqlbackup.sh.2.5 host_name:/usr/local/bin
# ssh host_name
# mv automysqlbackup.sh.2.5 mysql_hostname_dump
# chmod +x mysql_hostname_dump

这个脚本内已包含所有选项的详尽注释。请你务必从头阅读一次,好让你知道它在做什么。AutoMySQLBackup 连接到并转储所有你指定的数据库到 /backups、发电邮给你(若设置了的话)、并且采用循环的方式来确定你拥有一组数据库转储。

请确定你已填入 USERNAME、PASSWORD、及 DBNAMES。如果你想设置电邮,请遵照脚本内的方法来进行设置。设置的过程非常简单,因此当你把选项修改好,请在要被备份的主机上手动式执行脚本一次。

这样你可以检查 /backups 这个目录有否被创建,与及转储有否发生。

# cd /usr/local/bin
# ./mysql_hostname_dump

……大量输出……或错误……请据此作出修正。

# cd /backups
# ll

你应该会看见一个分开每日、每周、及每月的目录结构,而每个数据库的名称又会以独立目录的型式出现在它们之内。你可以遍历这些目录来找出对应你的数据库的 .sql.gz 文件。

为 BackupPC 主机加入 DumpPreUserCmd

既然转储用的脚本已经实际地在主机上设置好,我们便可以在 BackupPC 的网页界面设置 DumpPreUserCmd 要通过 SSH 连接到被备份的主机并执行 AutoMySQLBackup。请在网页界面选择一台主机,然后选择位于左上方的 EditConfig 页签。选择 BackupSettings 页签并进到 User Commands 以下部份。第一行便是 DumpPreUserCmd。

请在这部份加入下面数行。

$sshPath -q -x -l root $host /usr/local/bin/mysql_hostname_dump

选择顶部的 save,然后进到主机的 Xfer 页签。请确定你在 RsyncShareName 内加入 /backups 这个目录,否则你的转储永远不会从主机复制出来。这应便完成了,现在你的主机的 MySQL 数据库将会在 BackupPC 对目录进行 rsync 前被转储。如上述所说,你可以简易地编辑 AutoMySQLBackup 并改为一个 AutoPostgreSQLBackup 脚本。你只须将所有 MySQL 的语法改为 PostgreSQL 的指令及选项。

BackupPC 的其它功能

之前已经提及,BackupPC 亦可以将 SMB 的共享资源备份、利用 tar 来进行备份、及将备份保存在其它媒体上。

BackupPC 的相关文档对每个功能都有所解释。
$Conf{XferMethod} = 'rsync';
The valid values are:
      - 'smb':     通过 smbclient 及 SMB 通讯协议进行备份及撤消。
                   WinXX 的最简单选择。
      - 'rsync':   通过 rsync(通过 rsh 或 ssh)进行备份及撤消。
                   linux/unix 的最佳选择。亦是 WinXX 的好选择。
      - 'rsyncd':  通过客户端上的 rsync 守护程序进行备份及撤消。
                   执行着 rsyncd 的 linux/unix 客户端的最佳选择。亦是 WinXX
                   的好选择。
      - 'tar':     通过 tar 或在 ssh、rsh 或 nfs 里执行的 tar 进行备份及撤消。
                   linux/unix 的一个好选择。
      - 'archive': 主机是台特殊的存档主机。备份不会进行。存档主机是用来将其它
                   主机的备份保存到磁带、CDR 或 DVD 等永久性媒体里。

【编辑推荐】

  1. Linux备份入门:3种克隆方法详解
  2. 四大Linux备份工具比较与操作实例
  3. 详解Linux备份应用tar命令
  4. 学习手册:Linux备份ghost
  5. 你会选择怎样的Linux备份工具?
责任编辑:张浩 来源: 互联网
相关推荐

2010-05-19 10:57:34

Subversion配

2010-06-07 12:38:37

Cacti使用手册

2011-03-15 15:00:56

组策略

2009-12-02 18:03:00

PHP cURL

2010-06-13 17:07:10

Cacti使用手册

2009-10-26 11:11:33

linux Emacs

2010-08-31 08:59:06

marginHTML

2011-08-09 13:22:31

iPhoneSqlite数据库

2010-05-31 15:57:36

Cacti使用手册

2010-05-26 14:01:47

SVN安装使用手册

2010-05-21 12:37:49

SVN使用教程

2010-05-26 12:35:11

2013-10-31 14:55:22

2010-05-26 13:17:55

SVN简易使用手册

2010-05-27 13:35:43

SVN简易使用手册

2010-05-26 13:51:40

SVN安装使用手册

2010-05-26 12:59:48

SVN简易使用手册

2010-05-20 19:12:37

2010-05-31 17:38:55

Cacti使用手册

2010-08-25 10:53:04

CSSmargin-bott
点赞
收藏

51CTO技术栈公众号