BBS水木清华站∶精华区
发信人: cooly.bbs@bbs.im.tku.edu.tw (出 处: cooly@mis.im.tku.edu.t), 看板: Linux
标 题: 网路备份系统说明文件
发信站: 渡船头之恋 BBS 站 (Thu Jul 17 11:47:57 1997)
转信站: sobee!netnews.ntu!news.mcu!news.cs.nthu!UUserv.Net.tw!aidebbs!news.yzi
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□ NBS ( Network Backup System ) 说明文件 □
□ 原文刊载於 光碟月刊 (Hope Net) 第 37 期 1997 JUNE □
□ 本文允许有需要者自由散怖 , 但严禁将其转为商业利用 ,如要散布本文也请保留 □
□ 本声名 . □
□ □
□ 作者 : 淡江资管 张钦隆 ( cooly@mis.im.tku.edu.tw ) □
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
NBS 系统介绍
------------
相信许多管理过 Unix 主机的人都有过因为资料毁损 , 而需重建系统的经验 , 如果资料
有备份的话 , 事情还好解决 , 最惨痛的就是没有备份资料 , 这时就算你再怎麽高竿 ,
资料要再救回来恐怕也是回天乏术了 , 基於这个原因 , 我便著手开发了这套备份系统 ,
一套好的备份系统应该至少应具备有下面的功能 :
1. 能够在系统 crash 後 , 轻松地将资料「回存」回来 .
2. 「备份/回存」过程中如果有「错误」出现 , 应能自动重新「备份/回存」 .
3. 应该能让系统管理员做到「备份自动化」 .
4. 「备份/回存」资料时 , 必须考虑到资料的「安全性」 .
没有做到这几点的系统 , 并不能说是一个完整的「备份系统」, 因此我在开发NBS时 ,便
是以以上四点功能来作考量 .
NBS(Network Backup System , 网路备份系统) , 是一个 Unix 上标准的 Client/Server
架构的系统 , 整个系统分成两个部份 , 即 Client 和 Server , 彼此之间透过 TCP/IP
的连结来传递资料 , 下面这个图可以清楚地说明这个系统的运作情形 :
------------------------------------------------------------------------------
│ ┌—————┐
│ ┌————┐│ NBS │
├————┼ 编/解码├┼ │
│ └————┘│ Client1 │
┌—————┐ │ └—————┘
│NBS │┌————┐ │
│ ┼┤编/解码 ┼—————┤
│Server │└————┘ │
└—————┘ │
│
( TCP PORT 5000 ) │
│ ┌—————┐
│ ┌————┐│ NBS │
├————┼ 编/解码├┼ │
│ └————┘│ Client2 │
│ └—————┘
□ The Server's Job(When receive client's request)
Step1 . 检查 Client 的 IP Address .
Step2 . 检查 Client 的 Password .
Step3 . 确认 Client 的服务类型 (备份 or 回存) .
Step4 . 提供 Client 所需的服务 .
□ The Client's Job(When request server to provide service)
Step1 . 分析备份描述档(何谓备份描述档 , 於稍後再行说明) .
Step2 . 送出 Password .
Step3 . 送出 Service Type(服务类型) .
Step4 . 传递资料 .
------------------------------------------------------------------------------
由上图我们可以清楚地看到整个系统的运作情形 , 一台跑 NBS Server 的主机可以同时
服务多台 NBS Client 端 , 提供「备份/回存」的服务 , 当备份主机(NBS Server) 收
到来自 Client 端的 request 时 , 它会先检查其「IP Address」是否为系统认可的 IP
Address , 如果不是的话就拒绝提供服务并关闭连线 , 如果此 IP Address 是 Server
端认可的 Address , 则检查其传送过来的「密码」是否正确 , 如果密码不正确 , 则一
样拒绝提供服务并关闭连线 , 如果正确 , 就检查 Client 端所要求的服务为何 , 确认
服务类型後 , 随即开始提供服务 , 这就是整个 NBS 系统大致的运作状况 , 下面我们
就来谈谈这个「备份系统」的特色 .
NBS 系统特色
------------
1. 集权式的备份管理 .
NBS Server 有一个设定档 , 里面存有它所认可的「NBS Client」主机的位址和其相
关资料 , 且它所认可的 Clients 的「备份资料」都是储存在 NBS Server 里的 , 这
种集权式的管理方式的优点就是 : 「管理容易 , 只要把 Client 的资料设定好 , 就
可以提供服务了」, 但这种方式也是有其缺点 , 就是 : 「资料集中 , 风险也就集中
, 一旦备份主机资料有所毁损 , 所有的资料就有可能毁於一旦」.
解决这种缺点的方式有两种 , 一种是「备份主机」最好购置容错型的电脑 , 如「磁
碟阵列」系统 , 这种方式必须花费高昂的金钱 , 但资料安全性最高 , 另一种就是购
买两台以上的备份主机 , 一台专门用来提供备份服务 , 另外的就用来 MIRROR 备份
主机的资料 ,这样即可拥有较高安全度的备份 , 一般说来 , 除非您是严谨不允许出
差错的机构 , 才须采用如上的策略 , 否则一台「备份主机」应该就以经足够 .
2. 透过「网路」进行备份 .
这套系统名为 NBS (Network Backup System) ,也就是「网路备份系统」, 顾名思义
, 这套系统能够让你透过「TCP/IP」网路协定来传送资料 ,由於是透过「网路」来进
行资料的「备份/回存」, 所以系统的「通用性」较高 , 也就是说只要你的主机有透
过 TCP/IP 和其它的主机连线 , 你就可以取得你的「备份主机」的服务 .
3. 资料编码传送 .
由於 NBS 系统是透过 TCP/IP 网路协定来传送资料 , 因此资料的安全问题就是一大
必需考虑的问题 , TCP/IP 本身并不是一个安全的通讯协定 , 因此所有的资料一旦
需透过网路传送时 , 系统都会先予以编码保护 , 如此一来资料的安全度就增高许多.
4. 线上即时压缩备份
也就是在压缩资料的同时 , 就将资料传送给 Server 端 , 利用这种线上即时压缩技
术来将资料传送给 Server 端 , 将可以减低 Server 端储存空间的消耗 , 也可以避
免掉压缩资料时所造成的 Client 端的储存空间的损耗 .
5. 自动化备份
一旦您将您的设定设好後 , 所有有关备份的资讯都用档案储存著 , 所以你并不需要
和程式有任何的互动 , 因此您便可利用 crontab 这个标准的 UNIX 程式来定时执行
备份指令来将资料备份到「备份主机」上 , 如此一来 , 除非您想要更动备份设定 ,
否则资料备份的动作 , 系统自动便会为您来代劳了 .
NBS 系统需求
------------
1. 一套 Unix 系统(Linux/FreeBSD and Other UNIX) , 系统需提供 Socket 界面 .
2. Client 端必需安装 GNU TAR 和 GNU GZIP , Server 端无此限制 .
NBS 的取得
----------
途径有:
1. 本期光碟片里有完整的 Source , 档名 : nbs-1.1b.tgz
2. FTP://mis.im.tku.edu.tw/pub/network/nbs-1.1b.tgz
一旦 NBS 有新的版本 , 就会置於
FTP://mis.im.tku.edu.tw/pub/network/ 下 , 请尽量取得最新的版本安装 , 需注意的
是 , 一旦您更换了新的版本 , Client 和 Server 都需同步更新 , 以免造成资料错误.
NBS 的安装
----------
介绍完这个系统之後 , 现在开始来介绍这个系统的安装 , 一般说来要安装 UNIX 上的
软体有两种途径 , 一种是 Binary file 的安装 , 也就是直接安装可执行的执行档 ,
另外一种就是所谓的 Source Code 安装 , 也就是拿回来的档案是未经过编译的程式原
始码 , 这种安装方式较为繁琐一点 , 且需要有较多的经验 , 才比较容易安装完成 ,
基於「可携性」的考量 , NBS 并不提供 Binary file 的安装 , 所以下面要介绍的是如
何用 Source Code 安装 NBS 系统 .
首先 , 请先确定你的身份 , 如果你不是 root , 请先变成 root 再进行下面的步骤 ,
再来 , 请解开这个压缩档 , 指令为 :
# tar zxvf nbs-1.1b.tgz ( # 为 shell 提示符号 )
之後 , 你会看到一个叫 nbs-1.1b 的目录 , 请打
# cd nbs-1.1b
进入这个目录下 , 然後依下面的步骤开始安装系统 .
□ Server 端 :
要安装 Server 端程式 , 请进入 server 这个目录 , 进去後请先编辑 Makefile 这
个档里的一个叫 「INSTALL_DIR」 的「变数」 , 这个变数用来设定编译过後的程式
该安装在那个目录下 , 预设目录为「/usr/local/sbin」, 改好後只要打
# make
即可完成程式的安装 , 如果预设的目录没变 , 在「/usr/local/sbin」下应该会有一
个叫 nbsd 的 Daemon 程式 , 如果你有变更你的预设目录 , 则 nbsd 就会出现在你
所设定的目录下 , 找到 nbsd 後请执行之 , 执行後 , 如果你想测试 nbsd 是否可以
正常运作时 , 请打
# telnet <您的 ip address> 5000
如果出现类似下面的讯息的话 , 表示 nbsd 已经开始正常运作了 :
Trying 128.1.1.1...
Connected to polaris.
Escape character is '^]'.
Connection closed by foreign host.
然後 , 请将下面的叙述写入您的「系统初始档」里 , 如 rc.local , 让每次系统一
启动就能自动执行此 Daemon :
echo "Network Backup System Daemon ..."
/usr/local/sbin/nbsd
至此 , Server 端已经安装完成 , 至於要如何使用及设定 NBS Server , 稍後我们
会有详细的介绍 .
□ Client 端 :
安装 client 端程式 , 请先进入 client 这个目录 ,进去後请编辑 Makefile 里的一
个叫作「INSTALL_DIR」的变数 , 这个变数用来指定 client 端程式该放到那个目录,
如有需要请将其改成您所要安装的目录 , 预设的目录为「/usr/local/bin」 , 改好
後请在 Shell 提示符号下打
# make all
即可将程式编译安装完成 , 装完後 , 如果您没有更改预设的目录 , 则您会在
「/usr/local/bin」下看到两个档「nbs」和「setnbs」, nbs 是此系统的 client 端
「主程式」, 而 setnbs 则是用来「设定环境」用的 , 关於 client 端的详细用法 ,
我们稍後会有详细的说明 .
NBS 的使用
----------
进行到这里 , 相信许多读者已经将 NBS 系统安装完成了 , 现在开始最重要的部份 ,
也就是开始来学习使用 NBS 系统 , 使用 NBS 并不难 , 设定也相当简单 ,只要读者能
把说明看完 , 很快就可以上手 , 下面我们将分成 Client 端的使用和 Server 端的使
用两大段来介绍如何使用这套系统 :
□ Server 端 :
如果您的机器是要做为「备份主机」的话 , 请按照安装程序 , 将 server 端主程式
编译完成 , 然後您会在「/etc/」这个目录下发现有一个叫做「backup.servers」的
档案 , 这个档是用来设定那一台主机可以将资料备份到您的「备份主机」上的 , 这
个档主要有三个栏位 , 分别为 (每个栏位都须以『:』隔开) :
Client 端主机的 IP or Domain Name :备份路径:主机通行密码;
分述如下:
1. Client 端的 IP(or DN) -> 即为 Client 端主机的的 IP 位址或是其 Domain
Name .
2. 备份路径 -> 即当 Client 端的主机将资料传过来时要放置其
「备份资料」的目录 .
3. 主机通行密码 -> 即 Client 端主机欲取得备份服务时所需传送过来的
密码 .
每一台 Client 端的主机都需在此档内有一行描述 , 每行描述都须以『;』(分号)作
为结尾 , 下面是一个□例 :
假设有一台主机 ip 位址为「128.1.1.4」, 其「备份资料」将备份至「备份主机」的
「/backup/polaris」这个目录下 , 且其密码被设定为「test」 , 则此主机的描述
行应该同下 :
128.1.1.4:/backup/polaris:test;
当您将您网路上 Client 端主机的描述都写入此档後 , 这些 Client 端主机就可以执
行 client 端的程式 , 开始将资料备份过来 .
至此 Server 端的设定工作已经完成 , 需要注意的是 , 此描述档内的『密码栏位』
并未编码储存 , 这是因为 NBS 在传送密码时乃是采用 MD5 的方式来编码再传送 ,
而MD5 编码法是属於「不可逆推」式的编码法 , 因此如果要检查 Client 所传来的密
码是否正确 , 就必需要正确的密码 , 才能检验出来 , 而我们又不希望我们还必须去
输入密码给 NBS Server , 因此「密码栏位」我们并未先经编码再行储存 , 而是直接
以ASCII 码的方式去储存的 , 因此管理 Backup Server 的管理员需特别注意此档案
的权限 , 请将其设为只有 root 可以读写 , 即在 shell 下输入 :
# chmod 0600 /etc/backup.servers
否则一旦此档 , 被一般 user 看见 , 而此 user 如果又在某一台主机拥有帐号 , 那
麽他就能将其资料备份到此「备份主机」上 , 所以随时保持此档只有 root 能读写是
很重要的 , 日後新版的 NBS 将新增一个用来设定此档的工具 , 以避免掉人为设定的
疏失 .
而「密码栏位」的设定可以包括除了『;』(分号)之外的「可见字元」和「空格」, 也
就是说您可以设定一「长字串」或「一个句子」当作密码 , 密码的给定需要在 Server
端设好 , 也就是说 Backup Server 的管理员必须将密码设定好後 , 再告诉 Client
端主机的管理员 , 让其在 client 端作设定 .
另外 , 「密码栏位」的密码至少需要「4 个字元」, 因为密码是用来当作资料传送时
编码和解码用的「KEY」, 所以一定要设定 , 且至少需要 4 个字元 .
§管理 Backup Server 的注意事项 :
1. 定时查看记录档
当您的备份系统 Server 端(nbsd)开始运作後 , 一旦 client 端一有 request
, nbsd 会将 client 端的「存取记录」放在「/var/log/nbsd」这个档内 , 备
份主机管理员应随时查看这个档 , 以保护系统的安全性 .
2. 尽量将暂存目录的空间加大
当 Client 端要将资料备份到 Server 端时 , Server 端会先将资料暂存在一个
暂存目录下 , 以 Linux 为例 , 其暂存目录为 /tmp , 等到资料传送完毕 , 再
将其移至其「备份路径」下 , 这是为了确保资料在传送时如果有任何错误造成
传输失败时 , 旧的备份依然不至於被破坏 , 因此如果暂存目录的空间不够大 ,
一旦多台 Client 端主机同时备份时 , 可能会因为暂存空间不够大而造成备份
失败 , 而暂存目录空间的大小 , 请依照您所服务的 Client 端的数量和其备份
资料量的多寡来衡量 , 在这里有一点要强调的是 , 并不是每一种 OS 都是将资
料暂存在 /tmp 下的 , 有些是在 /var/tmp 下 , 如 FreeBSD , 这得要看在
stdio.h 里的 P_tmpdir 巨集的定义为何了 , 如果您不确定 , 可以先找到
stdio.h 这个档 ,然後打下面这一行指令 :
# grep P_tmpdir stdio.h
这样就会出现如下的字串(以 Linux 为例) :
#define P_tmpdir "/tmp"
这就表示 Linux 的暂存目录是 /tmp , 此时应将这个目录的空间加大 , 其馀
的系统请依您的系统的设定来加大您的暂存目录 .
□ Client 端 :
如果您的机器是某台备份主机的 client 端 , 请按照安装程序将 client 程式安装完
成 , 在安装完成 client 端程式後 , 请向您的「备份主机」的管理员取得下面的
资料 :
1 . 您的「备份密码」 .
2 . 「备份主机」的 IP Address 或 Domain Name .
取得您所需的资料後 , 就可以开始「设定 client 端」了 , 请依照下面的步骤来做 :
Step 1 :
首先请打
# setnbs
此时会出现一个有四个选项的 menu , 如下所示
--------------------------------
NBS environment setup menu
--------------------------------
(1) Setup backup password.
(2) Setup nbs server's address.
(3) Setup all.
(4) Quit.
--------------------------------
choice :
您可以利用这个 menu 来设定您的 nbs , 如果您选择「1」, 就可以设定您
的「备份密码」, 这个密码会存於「/etc/config.nbs」里 , 此档只有 root
才能读写 , 如果您选择「2」的话 , 就可以设定您的「备份主机」的位址 ,
此位址可以是「ip」也可以「domain name」, 1.0.1r版以前 , 备份主机的
位址是利用系统变数去存取的 , 也因此无法利用 crontab 来定时备份 , 因
此现在改用档案来储存此变数 , 备份主机的位址也将存在 /etc/config.nbs
里 , 如果你选择「3」, 则可设定两者 .
Step 2 :
在设定完成後 , 再来就是编写『备份描述档』, 这个描述档主要是让您设定
「那些目录」要备份 , 备份後的储存在 Server 端的「档名」为何 , 请用您
所习惯的文书编辑器来编写这个档 , 『备份描述档』的主要的语法描述如下 :
#comment --> 以 # 开头的那一行会被当成说明用的叙述
package --> 一定要以 package 开头 , 否则 { } 内的描述就会被忽略 .
{
what: /etc; --> 设定那个「目录」要备份 , 需以 『;』做结尾 .
filename: etc.tgz; --> 设定备份到备份主机上的档名 , 也需以『;』做结 .
}
# another package
package
{
what: /user;
filename: user.tgz
; --> 分号也可以打在这里 , 只要有输入分号作结尾即可 .
}
注意事项:
1.「what:」之後的目录不可以为 symbol link 的目录 , 否则会被略过不予
备份 , 请输入「绝对路径」.
2. client 的目录下有一个叫「example」的目录 , 其下有一个参考用的描述
档 .
Step 3 :
写好描述档後 , 您就可以开始备份了 , 假设『备份描述档』如下 , 且档名
为「backup1」:
-----------------------------------------------
package
{
what: /usr/src/linux-2.0.29;
filename: kernel.tgz;
}
-----------------------------------------------
现在假设设定都已经完成 , 则
「备份」时请在 Shell 题示符号下输入 :
# nbs -backup backup1
之後如果出现如下的讯息 , 就表示备份已经完成 .
Parsing backup1 ... Done .
Connecting to NBS Server [ 128.1.1.1 ] ... Done.
[ NBSD ] : Password check ok !!
The file will be backuped to BACKUP SERVER is [ kernel.tgz ]
The size of DATA to transfer is 6044 KB
Backup is success !!
「回存」描述档内的资料回来时 , 您也只需在 Shell 题示符号下输入 :
# nbs -restore backup1 /
之後如果出现如下的讯息 , 就表示资料已经成功地回存回来了 , 需注意的是
第三个参数『/』表示资料从「根目录」下回存回来 , 如果您想将资料回存到
其它目录只要更改这个参数即可 .
Parsing backup1 ... Done .
Connecting to NBS Server [ 128.1.1.1 ] ... Done.
[ NBSD ] : Password check ok !!
The file will restore from BACKUP SERVER is [ kernel.tgz ]
The size of DATA to transfer is 6044 KB
Restore is success !!
§使用 Backup Client 的注意事项 :
1. 利用 crontab 来自动备份
如果您想让系统自动备份 , 请将您的描述档写好後 , 将「备份指令」写入
crontab 里 , 如此系统即可自动定时备份 .
2. 利用 setnbs 来设定系统
请尽量不要直接去编辑「/etc/config.nbs」这个档 , 因为这个档存有「备份密
码」, 人为的疏失常常会造成「密码」的外漏 , 因此当您要设定系统时 , 请利
用 setnbs 这支程式来做 .
3. 在网路使用率低时备份
由於 NBS 是透过网路来进行资料的传递 , 因此对於网路的负荷相当地高 ,所以
请尽量在网路使用率较低的时段进行备份 ,较不会对您的网路上的使用者造成困
扰 , 备份时也可得到较高的传输率 .
NBS FAQ
-------
下面是我收录的几则 FAQ , 希望能对读者有所帮助 , 如果您对 NBS 还是有疑问 ,
请直接 E-Mail 到 cooly@mis.im.tku.edu.tw , 我会尽快给你完整地答覆 .
1. 如果我备份备到一半 , 系统 Crash 掉了 , 旧的备份是否还存在 ?
ANS .应该是还在 , 因为如果系统在 Client 和 Server 传送资料的期间出了问题 ,
Server 端会把在暂存目录下的暂存档删除 , 而不会对旧的备份档有任何存取动
作 , 也就是说只有在资料完整地传送完後 , 系统才会更新旧的备份档 .
2. 如果我同时执行两个以上的 nbs (client) 是否会造成资料错乱 ?
ANS .不会 , 因为 nbs client 在传送资料时 , 会先在暂存目录下建立一个 name pipe
(FIFO)档 , 再利用这个档来传送资料 , 而这个 FIFO 档的档名是依照 process
的不同而有所不同 , 因此同时执行两个 nbs client 并不会造成资料错乱 .
3. NBS 支援的平台有那些 ?
ANS . 目前经过测试的有 Linux 和 FreeBSD , 其它的 Unix 如果有提供 Socket 界
面的话 , 应该也能顺利安装成功 , 需注意的是有些 Unix 所提供的 Socket
界面是以附加的 Library 方式提供的 , 因此在编译时需要将此 Library Link
进来 , 如何 Link 请依照您的系统所提供的方式 , 当您在 Linux 和 FreeBSD
以外的 Unix 编译成功 NBS 系统後 , 也请写一封 E-mail 给作者 , 告知作者
您的作业平台和您的编译方法 , 以便日後供其它 User 参考 .
4. NBS 所用的资料编码法为何 ?
ANS . NBS 目前所采用的资料编码方式是抓备份密码当 KEY , 然後以 BIT XOR 的方
式来编码 , 因此要保护好您的资料就必须保护好您的 KEY 不外漏 .
後记
----
NBS 这套系统主要是用在需要定时备份的 UNIX 网路主机上的一套备份系统 , 它提供了
完整的 Server 端管理机制 , 和 Client 的简易设定 , 再加上资料编码传送的支援 ,
或许目前 NBS 的功能并不算是最强大的 , 但对於需要一套简单易用又安全的备份系统
的人而言 , NBS 应该可以满足您的需求的 .
--
※ 来源:.渡船头之恋 BBS 站 bbs.im.tku.edu.tw.[FROM: cooly@mis.im.tku.edu]
BBS水木清华站∶精华区