在 Unix上 架 设 NBS系 统

本 文 作 者 : 张 钦 隆


相 信 许 多 管 理 过 Unix主 机 的 人 都 有 过 因 为 资 料 毁 损 , 而 需 重 建 系 统 的 经 验 , 如 果 资 料 有 备 份 的 话 , 事 情 还 好 解 决 , 最 惨 痛 的 就 是 没 有 备 份 资 料 , 这 时 就 算 你 再 怎 麽 高 竿 , 资 料 要 再 救 回 来 恐 怕 也 是 回 天 乏 术 了 。 基 於 这 个 原 因 , 我 便 着 手 开 发 了 这 套 备 份 系 统 , 一 套 好 的 备 份 系 统 应 该 至 少 应 具 备 有 下 面 的 功 能 :

1. 能 够 在 系 统 crash後 , 轻 松 地 将 资 料 「 回 存 」 回 来 。 2.「 备 份 /回 存 」 过 程 中 如 果 有 「 错 误 」 出 现 , 应 能 自 动 重 新 「 备 份 /回 存 」 。

3. 应 该 能 让 系 统 管 理 员 做 到 「 备 份 自 动 化 」 。

4.「 备 份 /回 存 」 资 料 时 , 必 须 考 虑 到 资 料 的 「 安 全 性 」 。

没 有 做 到 这 几 点 的 系 统 , 并 不 能 说 是 一 个 完 整 的 「 备 份 系 统 」 , 因 此 我 在 开 发 NBS时 , 便 是 针 对 上 述 四 点 功 能 来 作 考 量 。

NBS( Network Backup System, 网 路 备 份 系 统 ) , 是 一 个 Unix上 标 准 的 Client/Server架 构 的 系 统 , 整 个 系 统 分 成 两 个 部 份 , 即 Client和 Server , 彼 此 间 透 过 TCP/IP的 连 结 来 传 递 资 料 , 下 图 可 说 明 这 个 系 统 的 运 作 情 形 :

NBS 编 /解 码 NBS Client1 Server

编 /解 码 编 /解 码 NBS Client2

( TCP PORT 5000)

The Server’ s Job( When receive client’ s request)

Step 1 检 查 Client的 IP Address

Step 2 检 查 Client的 Password

Step 3 确 认 Client的 服 务 类 型 ( 备 份 or回 存 )

Step 4 提 供 Client所 需 的 服 务

The Client’ s Job( When request server to provide service)

Step 1 分 析 备 份 描 述 档 ( 何 谓 备 份 描 述 档 , 於 稍 後 再 行 说 明 )

Step 2 送 出 Password

Step 3 送 出 Service Type( 服 务 类 型 )

Step 4 传 递 资 料

由 上 图 , 我 们 可 以 清 楚 地 看 到 整 个 系 统 的 运 作 情 形 , 一 台 跑 NBS Server的 主 机 可 以 同 时 服 务 多 台 NBS Client端 , 提 供 「 备 份 /回 存 」 的 服 务 , 当 备 份 主 机 ( NBS Server) 收 到 来 自 Client端 的 req-uest时 , 它 会 先 检 查 其 “ 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 Sys-tem) , 也 就 是 「 网 路 备 份 系 统 」 , 顾 名 思 义 , 这 套 系 统 能 够 让 你 透 过 “ TCP/IP” 网 路 协 定 来 传 送 资 料 , 由 於 是 透 过 「 网 路 」 来 进 行 资 料 的 「 备 份 / 回 存 」 , 所 以 系 统 的 「 通 用 性 」 较 高 , 也 就 是 说 只 要 你 的 主 机 有 透 过 TCP/IP和 其 他 的 主 机 连 线 , 你 就 可 以 取 得 你 的 「 备 份 主 机 」 的 服 务 。

3. 资 料 编 码 传 送

由 於 NBS系 统 是 透 过 TCP/IP网 路 协 定 来 传 送 资 料 , 因 此 资 料 的 安 全 问 题 就 是 一 大 必 须 考 虑 的 问 题 , TCP/IP本 身 并 不 是 一 个 安 全 的 通 讯 协 定 , 因 此 所 有 的 资 料 透 过 网 路 传 送 时 , 系 统 都 会 先 予 以 编 码 保 护 , 如 此 一 来 , 资 料 的 安 全 度 就 增 高 许 多 。

4. 线 上 即 时 压 缩 备 份

也 就 是 在 压 缩 资 料 的 同 时 , 就 将 资 料 传 送 给 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.i-m.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里 的 一 个 叫 作 “ INSTAL-L_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/” 这 个 目 录 下 发 现 有 一 个 叫 做 “ ba- ckup.servers” 的 档 案 , 这 个 档 是 用 来 设 定 那 一 台 主 机 可 以 将 资 料 备 份 到 您 的 「 备 份 主 机 」 上 的 , 这 个 档 主 要 有 叁 个 栏 位 , 分 别 为 ( 每 个 栏 位 都 须 以 「 : 」 隔 开 ) : Client端 主 机 的 IP or Domain Name: 备 份 路 径 : 主 机 通 行 密 码 ; 分 述 如 下 : 1. Client端 的 IP( or DN) 即 为 Client端 主 机 的 I- P位 址 或 是 其 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 Se-rver, 因 此 「 密 码 栏 位 」 我 们 并 未 先 经 编 码 再 行 储 存 , 而 是 直 接 以 ASCII码 的 方 式 去 储 存 的 , 因 此 管 理 Backup Server的 管 理 员 需 特 别 注 意 此 档 案 的 权 限 , 请 将 其 设 为 只 有 root可 以 读 写 , 即 在 shell下 输 入 :

# chmod 0600 /etc/backup.servers

否 则 一 旦 此 档 被 一 般 user看 见 , 而 此 user如 果 又 在 某 一 台 主 机 拥 有 帐 号 , 那 麽 他 就 能 将 其 资 料 备 份 到 此 「 备 份 主 机 」 上 , 所 以 随 时 保 持 此 档 只 有 r-oot能 读 写 是 很 重 要 的 , 日 後 新 版 的 NBS将 新 增 一 个 用 来 设 定 此 档 的 工 具 , 以 避 免 掉 人 为 设 定 的 疏 失 。

而 「 密 码 栏 位 」 的 设 定 可 以 包 括 除 了 「 ; 」 之 外 的 「 可 见 字 元 」 和 「 空 格 」 , 也 就 是 说 您 可 以 设 定 「 一 长 字 串 」 或 「 一 个 句 子 」 当 作 密 码 , 密 码 的 给 定 需 要 在 Server端 设 好 , 也 就 是 说 Backup Ser-ver的 管 理 员 必 须 将 密 码 设 定 好 後 , 再 告 诉 Client 端 主 机 的 管 理 员 , 让 其 在 client端 作 设 定 。

另 外 , 「 密 码 栏 位 」 的 密 码 至 少 需 要 「 4个 字 元 」 , 因 为 密 码 是 用 来 当 作 资 料 传 送 时 编 码 和 解 码 用 的 “ KEY” , 所 以 一 定 要 设 定 , 且 至 少 需 要 4个 字 元 。

管 理 Backup Server 的 注 意 事 项 :

1. 定 时 察 看 纪 录 档

当 您 的 备 份 系 统 Server端 ( nbsd) 开 始 运 作 後 , 一 旦 client端 一 有 request, nbsd会 将 client端 的 「 存 取 纪 录 」 放 在 “ /var/log/nbsd” 这 个 档 内 , 备 份 主 机 管 理 员 应 随 时 察 看 这 个 档 , 以 保 护 系 统 的 安 全 性 。

2. 尽 量 将 暂 存 目 录 的 空 间 加 大

当 Client端 要 将 资 料 备 份 到 Server端 时 , Server端 会 先 将 资 料 暂 存 在 一 个 暂 存 目 录 下 , 以 L-inux为 例 , 其 暂 存 目 录 为 /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程 式 安 装 完 成 , 安 装 完 成 後 , 请 向 您 的 「 备 份 主 机 」 的 管 理 员 取 得 下 面 的 资 料 :

1 . 您 的 「 备 份 密 码 」

2 .「 备 份 主 机 」 的 IP Address或 Domain Name

取 得 您 所 需 的 资 料 後 , 就 可 以 开 始 「 设 定 clie-nt端 」 了 , 请 依 照 下 面 的 步 骤 来 做 :

Step 1 :

首 先 请 打

# setnbs

此 时 会 出 现 一 个 有 四 个 选 项 的 menu, 如 下 所 示 :

          NBS environment setup menu

( 1) Setup backup password

( 2) Setup nbs server’ s address

( 3) Setup all

( 4) Quit

choice :

Step 2 :

在 设 定 完 成 後 , 再 来 就 是 编 写 「 备 份 描 述 档 」 , 这 个 描 述 档 主 要 是 让 您 设 定 「 那 些 目 录 」 要 备 份 , 备 份 後 的 储 存 在 Server端 的 「 档 名 」 为 何 , 请 用 您 所 习 惯 的 文 书 编 辑 器 来 编 写 这 个 档 , 「 备 份 描 述 档 」 的 主 要 的 语 法 描 述 如 下 :

#comment --> 以 #开 头 的 那 一 行 会 被 当 成 说 明 用 的 叙 述

您 可 以 利 用 这 个 menu来 设 定 您 的 nbs, 如 果 您 选 择 「 1」 , 就 可 以 设 定 您 的 「 备 份 密 码 」 , 这 个 密 码 会 存 於 “ /etc/config.nbs” 里 , 此 档 只 有 root才 能 读 写 , 如 果 您 选 择 「 2」 的 话 , 就 可 以 设 定 您 的 「 备 份 主 机 」 的 位 址 , 此 位 址 可 以 是 「 IP」 也 可 以 “ domain name” , 1.0.1r版 以 前 , 备 份 主 机 的 位 址 是 利 用 系 统 变 数 去 存 取 的 , 也 因 此 无 法 利 用 cront-ab来 定 时 备 份 , 因 此 现 在 改 用 档 案 来 储 存 此 变 数 , 备 份 主 机 的 位 址 也 将 存 在 /etc/config.nbs里 , 如 果 你 选 择 「 3」 , 则 可 设 定 两 者 。

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 SER-VER 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, 希 望 能 对 读 者 有 所 帮 助 。

Q: 如 果 我 备 份 备 到 一 半 , 系 统 Crash掉 了 , 旧 的 备 份 是 否 还 存 在 ?

A: 应 该 是 还 在 , 因 为 如 果 系 统 在 Client和 Server

传 送 资 料 的 期 间 出 了 问 题 , Server端 会 把 在 暂 存 目 录 下 的 暂 存 档 删 除 , 而 不 会 对 旧 的 备 份 档 有 任 何 存 取 动 作 , 也 就 是 说 只 有 在 资 料 完 整 地 传 送 完 後 , 系 统 才 会 更 新 旧 的 备 份 档 。

Q: 如 果 我 同 时 执 行 两 个 以 上 的 nbs( client) 是 否 会 造 成 资 料 错 乱 ?

A: 不 会 , 因 为 nbs client在 传 送 资 料 时 , 会 先 在 暂 存 目 录 下 建 立 一 个 name pipe( FIFO) 档 , 再 利 用 这 个 档 来 传 送 资 料 , 而 这 个 FIFO档 的 档 名 是 依 照 process的 不 同 而 有 所 不 同 , 因 此 同 时 执 行 两 个 nbs client并 不 会 造 成 资 料 错 乱 。

Q: NBS支 援 的 平 台 有 那 些 ?

A: 目 前 经 过 测 试 的 有 Linux和 FreeBSD, 其 他 的 Unix如 果 有 提 供 Socket介 面 的 话 , 应 该 也 能 顺 利 安 装 成 功 , 需 注 意 的 是 有 些 Unix所 提 供 的 Socket界 面 是 以 附 加 的 Library方 式 提 供 的 , 因 此 在 编 译 时 需 要 将 此 Library Link进 来 , 如 何 Link请 依 照 您 的 系 统 所 提 供 的 方 式 , 当 您 在 Linux和 FreeBSD 以 外 的 Unix编 译 成 功 NBS系 统 後 , 也 请 写 一 封 E-Mail给作 者 , 告 知 作 者 您 的 作 业 平 台 和 您 的 编 译 方 法 , 以 便 日 後 供 其 他 User参 考 。

Q: NBS所 用 的 资 料 编 码 法 为 何 ?

A: NBS目 前 所 采 用 的 资 料 编 码 方 式 是 抓 备 份 密 码 当 KEY, 然 後 以 BIT XOR的 方 式 来 编 码 , 因 此 要 保 护 好 您 的 资 料 就 必 须 保 护 好 您 的 KEY不 外 露 。

後 记

NBS这 套 系 统 主 要 是 用 在 需 要 定 时 备 份 的 UNIX网 路 主 机 上 的 一 套 备 份 系 统 , 它 提 供 了 完 整 的 Server端 管 理 机 制 , 和 Client的 简 易 设 定 , 再 加 上 资 料 编 码 传 送 的 支 援 , 或 许 目 前 NBS的 功 能 并 不 算 是 最 强 大 的 , 但 对 於 需 要 一 套 简 单 易 用 又 安 全 的 备 份 系 统 的 人 而 言 , NBS应 该 可 以 满 足 您 的 需 求 的 。

( 作 者 E-Mail: cooly@mis.im.tku.edu.tw )