使用开放源码备份和恢复数据
2009-11-22 15:12:00 阿炯

问题:你有许多分散在各处的关键数据,怎样能够确定这些数据被安全地和放心哦备份了?

回答:Amanda和Rsync。

你在一个典型的IT环境中工作,此环境中有大量的机器、大量的程序和大量的数据。虽然NAS和SAN供应商可以描绘出一幅美丽的图画,将所有的数据都存放在中心数据存储上,但事实上,多数环境中使用的是大量服务器的附加存储――换句话说,就是安装在机器内部的磁盘。

然而,即使数据在本地存储,也并不意味着它不重要。这些数据可能是公司的E-mail,或者是账户系统,甚而可能是ERP数据库,它们中的所有都是关键的,所有的数据都需要备份。

数据分散的特性使备份它们成为一个现实的挑战。系统管理员能够被不停的在机器之间往来做单独备份累的半死――这也是在从前网络时代所使用的主要方法。

显然,必须有一个更好的方法才能够解决这个问题。理想的状态是每台机器能够自动备份,然后所有的数据都存放在中心区的磁盘中,并能够快速的存取备份的东西,同样,如果可以,对永久存储的东西自动备份到磁带中。

已经有两个开放源码产品能够真正将我们上述的想像变为现实,它们就是:Amanda和Rsync。虽然稍微有些不同,但它们都将从远程机器获取数据,然后将数据存放在中心位置用来方便存储备份的设备上。这两个软件的目的都是解决直接备份的问题,能够帮助减轻管理员的备份负担。

Amanda

Amanda最先是由马里兰大学开发的,是一个客户服务器系统,它被用来备份数据到中心位置,并能够将备份的数据写入外部磁带。“Amanda”是“Advanced Maryland Automatic Network Disk Archiver(高级马里兰自动网络磁盘归档工具)”的首字母缩写。

Amanda拥有一个聪明的备份算法,它能够进行全集备份和增量备份――包括部分的全集备份(我知道这听起来有些矛盾)――正是这种原因,减少了进行完全全集备份是的网络负担。如果这个方案听起来很混乱,那么它能够被配置为标准的通常使用的全集/增量备份方案。

安装Amanda需要在中心服务器(数据将要被存储的地方,可以是磁盘或者磁带)实现安装一些软件,每台客户端机器也是如此。服务器上包含非常重要的文件,它们是amanda.conf、disklist和tapelist。就像你猜想的一样,Amanda.conf是系统的整个配置文件,另外两个文件则分别是哪些资源需要被备份,以及哪些磁带将被写入数据。以这篇文章的长度,来谈论amanda.conf有一些复杂,不过在网上,已经有大量的非常好的使用指南。

服务器按照包含在amanda.conf文件中的预定计划信息,使用轮询机制访问客户机。然后每台客户机根据配置信息(可以同时运行多重轮询会话),将diskfile所定义的数据写入到在tapelists文件中定义的适当地方上去。

在一个拥有众多分散的静态数据的环境中,Amanda非常有用。数据中心是Amanda的理想环境,尤其是它不支持Windows机器。很可能你想使用一些工具如Cygwin来运行Amanda,这将使Amanda能够很好的备份Windows机器。总体来说,如果你想保证你的数据中心被备份到磁带存储设备中,并且不想购买昂贵的软件,Amanda就将是一个主要的选择。

Rsync

与Amanda专注于支持磁带备份相比,Rsync更专注于从一个磁盘位置到另一个磁盘位置之间的数据同步。Rsync由Andrew Tridgell创建,他是Samba的核心团队成员。

不同于Amanda使用的全集/增量备份方案,Rsync在每次执行同步市,都运行一次全集备份。这看起来好像很浪费,不过Rsync非常聪明,它只更换文件中更改的数据块,因此它在数据的备份量上非常少,属于轻量级选手。Rsync通常使用SSH作为它的传输协议,因此数据在传输中是很安全的――这使得向防火墙外部的远程及其同步数据成为现实――即Rsync能够提供脱站备份。

由于Rsync几乎包含所有的Linux发行版中,因此你能够避免其安装的过程而直接使用它。Rsync最为典型的配置是作为客户机/服务器设置:客户机联系Rsync服务器,这使得Rsync成为动态环境下备份很好的选择。举例来说,在备份间歇性的连接网络的笔记本的应用中,Rsync就是一个非常好的选择。当然,Rsync也能够被配置为轮询方式;事实上,rsync能够被配置为双向方式工作,能够让两台机器互为备份。

有一个做好的优点,就是Rsync能够直截了当的被执行。一个简单的配置文件指出了那些文件将要被备份,这些备份的文件将被备份到什么地方。下面是一份Rsync的简单配置文件:
motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[simple_path_name]
path = /rsync_files_here
comment = My Very Own Rsync Server
uid = nobody
gid = nobody
read only = no
list = yes
auth users = username
secrets file = /etc/rsyncd.scrt

开始的四行定义了Rsync运行期间的内部信息,simple_path_name(简单路径名称)则是一系列详细备份的绰号或者缩写名。path定义了被同步的本地和远程文件的路径,配置文件的剩余部分则与环境的安全设置有关。如果你很熟悉Samba,那么此配置文件与Samba配置文件的相似处是显而易见的。

这就是所有要做的事情!使用这些信息,你就可以开始备份。象你看到的一样,Rsync很强大,但又非常易于使用。如果你安装了Cygwin,rsync同样能够运行于Windows下。还有另外一种更为简便的在Windows下运行Rsync的方法,那就是将Rsync和Cygwin整合在一起的,被称作cwRsync的东西,它能够在http://contribs.org/contribs/dthomas/smeserver/6.x/Contrib/rsnapshot/cwRsync-howto.htm得到。它使用一个能够更据你的环境被更改批处理文件来执行应用。

Amanda和Rsync:备份的天堂

使用这些开放源码产品的可用性,没有任何接口再说单机备份是浪费时间的事情――或者,更坏的,不执行备份。Rsync是这两者中相比来说运行起来容易的,但这并不是说它在真实备份中要执行繁重的任务。这里再给你一个最后的警告:备份的原因是你有能力在发生糟糕的事件时恢复你的数据,因此一定要确认并不时检查你的备份,以确保数据能够被恢复,否则的话,你获得的所有将会是一大堆只写的数据位。

Bernard Golden是位于美国加利福尼亚圣卡洛斯的系统集成公司Navica Inc.的CEO,他也是《Succeeding with Open Source》(《使用开放源码取得成功》,由Addison-Wesley出版)一书的作者,并且是Open Source Maturity Model(开放源码成熟度模型)的创始者。这种模型是一种定位、评估和执行开放源码软件的正式化方法。

进行一般的备份应该是负责任的系统管理者的最高优先考虑。虽然Linux 是一个高度可靠的作业系统,系统失效仍然可能发生。可能因为硬体故障,电源中断,或其他不可预料的问题。

更常见的这些问题是来自人为的错误,不当的变动,甚至因为删除重要的档案。如果您负责管理系统上的用户,一定可能常被要求重建因为不小心误删的档案。

如果您进行一般备份,以每日为基础较好 (至少对更动频繁的使用者档案),您将会有助於减少档案的损失,并且增加复原程度。

最安全的备份方法是将他们纪录於不同的媒体中,例如磁带,抽取式硬碟,可写式 cd .等。 然後将您的备份和您的 Linux系统分开存放。有时候这可能并不实际 -- 也许在您可以存放备份磁带的地方没有防火室,或是在第一优先的地点没有办法存取这样的外部备份系统。虽然如此,仍然可以进行备份,只是会受到一点限制。

在我服务的单位,我在几个 Linux 系统上进行备份。按情况的不同,有些备份存放在磁带,其他则写入位於网路上的不同伺服器中,然而有一些仍然使用 cron 自动作业 (可能因为伺服器位在远端,在那里每天进行磁带备份是不切实际或不可能的),简单的放在分别不同磁碟上的分割区中 (例如,放在 "/archive/" 档案系统) 。

在家里,我没有外部的备份系统,我也没有大量的磁碟空间去存放备份影像档。因此,我改为只备份在"/home/" 的我的使用者档案,同样的还有一些在 "/etc/"的自订设定档,将备份存放在分别不同的磁碟分割区中。

伺服器备份程序

进行Linux备份有几种不同的方法,其中包括所有 Linux 发行版本中都有的命令列工具,例如 "dd", "dump", "cpio"以及 "tar"。其他还有文字型态工具,例如 "Amanda" 及 "Taper",这些是被设计来在备份及回存过程中加入更友善的使用者介面。当然也有图形介面的工具,像是"KDat"。最後,还有商业化的备份工具,像是 "BRU" 和 "PerfectBackup+"。这些备份计划中任何之一都足以提供您宝贵资料的保护。

这里有一些包括哪里可以获得工具的列表,可以在“Linux Applications and Utilities Page”找到,位於http://www.xnet.com/~blatura/linapp2.html#back. 当决定好备份方式,您可能要考虑下列几点因素:

可携性 - 备份的可携性 (亦即. 从一个 Linux 发行版本或应用 Unix备份然後回存到另外一个; 例如从Solaris 到 Red Hat Linux) 对您而言是否重要 ? 如果是,可能想要选择一个命令列的工具 (亦即. "dd","dump", "cpio", 或 "tar"),因为您可以相当地确定该工具可以在另一个 *nix 系统上找到。

无人或自动备份 - 定期自动进行备份而不需人力介入之能力,对您而言是否重要 ? 如果是,您可能需要能支援该方案的工具及备份媒体。

使用者友善 - 使用者友善的介面对您而言是否重要 ? 如果是,您可能想要选择一个文字或图形介面的工具。商业的应用程式可以提供最简便的介面及技术支援。

远端备份 - 从远端机器进行备份及回存的能力对您而言是否重要?如果是,您可能想要选择命令列或文字模式的工具而不是图形介面(除非您有相当快的网路连结及执行远端 X sessions 的能力)。

网路备份 - 从网路主机进行备份及回存对您而言是否重要 ? 如果是,您可能要用一些支援从网路存取备份设备的命令列工具(像是 "tar"),或是专用工具程式例如 "Amanda" 或是一些商业工具程式。

媒体型态 - 备份可以储存在很多不同的媒体,像是磁带,外接式硬碟,ZIP 磁碟,或可读写 CD。考虑售价及可靠性,储存容量,及传送速度。

警告: 当备份您的系统时, 不要包括 "/proc" 伪档案系统 ! /proc 中的档案并非真的档案,而仅是看起来像档案的描述,而且指向核心资料结构的连结。备份 "/proc/kcore" ,这事实上这是一个伪装档案,包含记忆体中所有的资料,会浪费很多的磁带 ! 您可能也需要避免备份 "/mnt" 档案系统,除非您有从 CD-ROM,软碟机,网路分享档案,或其他安装设备上备份的特殊需求。

明显地,备份及回存的过程会因您所选择的备份方法而有所不同。然而,在这一节,我将会讨论我最常使用的两种工具备份的方法 : "tar" (其名称源於“Tape ARchiver”),这是一个命令列式的工具,在 *nix 系统中具有很高的可携性 ; 以及 "KDat",一个来自於 KDE 套件的图形介面磁带备份工具。

最後,我应该补充一点,依您所选择的备份方式,即使该工具没有建立於自动备份时间表上的能力,您仍然可以利用 cron 功能进行该自动备份。 参考使用Cron 和 Crontab 档进行自动作业 有关使用 cron 的细节以及如何建立 crontab 行程表档案。

使用 "tar"备份:如果您选择 "tar" 作为您的备份方案,您可能要花点时间去了解种种的指令选项 ; 键入 “man tar” 有更深入的明细。您还需要了解如何存取适当的备份媒体 ; 虽然在 Unix 的世界中对待所有的装置就像处理档案一样,如果您写入到一个字元设备像是磁带,“档案”的名称就是设备本身的名称 (亦即. "/dev/nst0" 是一个SCSI介面的磁带机)。

下面的指令会将您的整个 Linux 系统备份於 "/archive/" 档案系统,除了 "/proc/" 伪装档案系统,"/mnt/", "/archive/" 档案系统 (没必要备份我们的备份档 !),还有 Squid 很大的快取资料档 (是的,依我之见,浪费备份媒体而且不需要去备份)之外的任何已挂载的档案系统 :
tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=var/spool/squid .
不要被上面的指令吓到 ! 当我们将其分为两部分,您将会发现这个强力工具之美。

上列的指令指定了选项 "z" (压缩; 备份资料经由 "gzip"压缩), "c" (建立; 一个 archive 档开始被建立),"v" (verbose; 显示出已经备份好的档案), "p" (允许保存;保护的资料将会被 “记忆” ,可以被回复)。"f" (档案) 选项後面接的是的要写入的 archive 档 (或装置)名称,注意包含资料的档名是如何得到的,只要用两个後引号将"date" 指令圈起来。 一般的命名惯例是在未压缩过的档案後面加上 " .tar" ,压缩的档案加上 "tar.gz" "--directory" 选项告知 tar 在开始备份前首先跳到以下的档案路径 ( 在本例中是"/"目录 )。 "--exclude" 选项告知 tar 不要备份所指定的档案或目录。最後, "." 符号告知 tar 要备份目前目录中的所有东西。

注意: 有一点很重要必须了解的就是 tar 的选项是大小写不同的 ! 此外,大部分的选项可以用助记符号加以简化(亦即. "f"), 或者使用较易记忆的选项全名 (亦即. "file")。 助记符号前用一个"-" 字元作为字首作为辨识,在全名的前面有两个这种符号的字首。参考 “man”页以得到更多有关使用 tar 的资讯。

另一个例子,这一次只有写入指定的档案系统 (和上一个除了例外全部写入的例子相反) 到一台 SCSI 的磁带机 :tar -cvpf /dev/nst0 --label="Backup set created on `date '+%d-%B-%Y'`." --directory / --exclude=var/spool/ etc home usr/local var/spool

在上面一行的选项,注意没有用到 "z" (压缩) 选项。我强烈建议反对写入压缩资料到磁带上,因为如果磁带上资料有一部份损坏,您会失去整个备份 ! 然而,未压缩的储存的 archive 档具有很高的可恢复性,即使磁带上的档案有一部份损毁。

因为磁带机是一个字元设备,没有办法指定一个确实的档名。因此,指定给 tar 的档名可简化为装置名称,"/dev/nst0",是在 SCSI 排汇上的第一个磁带设备。

注意: "/dev/nst0" 设备在备份做好後不会回带;因此有可能将好几组备份写到同一磁带。(您也可以选择"/dev/st0"这个装置,在这种情形磁带在备份完後会自动回带)
既然我们无法对一套备份指定档名, "--label" 选项可以来写进档案本身一些有关这一套备份的资讯。

最後,只有包含在 "/etc/", "/home/", "/usr/local", 及 "/var/spool/" (除了 Squid 的 快取资料档)会写进磁带。

当使用磁带时,可以使用下列命令回带,以及退出磁带:
mt -f /dev/nst0 rewind
mt -f /dev/nst0 offline

小技巧: 您将会发现到当 archive 档建立时,前面的"/" (斜线) 符号会被 tar 去除。这是 tar 的预设操作模式,这是故意用来保护您避免覆写这些重要档案的原先版本,以防万一您不慎在重建过程中覆写了不正确的档案。

如果您真的不喜欢这个特性 (记住,这是特性!) 您可以指定 tar "--absolute-paths" 选项,这样会保留前面的斜线。然而,我不建议这样做,因为很危险 !

使用"KDat"备份: 如果您使用 KDE 桌面环境,我相信您会发现"KDat" 公用程式不但强大而且对使用者很友善。此外,另一个好处是KDat 利用"tar" 作为其备份 engine。因此,用 KDat 写入的备份组不但可以用 KDat 读取,也可以用 tar ! 这使得 KDat 成为在使用者友善及备份可携性中很好的选择。

小技巧: 即使您决定不使用也不安装完整的 KDE 套件,如果您安装了 Qt 函式馆就仍然可以使用KDE。

当您第一次执行 KDat,您需要建立一个备份 profile。这个 profile 告诉 KDat 您想要备份系统中的哪些档案。如果您要的话,您可以建立好几个备份 profile,依照您的需求 (例如,您可以建立一个 profile 叫做“Full Backup”作系统的完全备份,或是 “Quick Backup”只备份使用者的档案)。

要建立备份 profile,可以选择从选单栏中“File”选项选择“Create Backup Profile” (或在“Backup Profiles”文件夹上按滑鼠右键,然後选择 “Create Backup Profile”)。在右手边的是 KDat 视窗,您可以改变各种设定,像是profile 名称,archive 名称, tar 选项, 以及其他的。单击 “Help” 选单有关於这些设定的用途说明。

要指定哪些档案应该包含在您的 backup profile, 在 "/" 目录文件夹旁的核对图示上敲一下左键。这会确定所有的档案及这个目录下所有东西都会备份。然後,在文件夹旁的小 "+"符号上敲一下左键,资料夹会展开,显示档案及以下的目录。您可以排除掉所不想备份的档案;只要在您想排除的每一个档案或目录旁的核对符号上敲一下左键。例如,一个完全备份应该包含已标记的所有档案及目录,要排除 "/proc" (一个伪装档案系统,包含您目前运作系统的资料),"/mnt" ( 位於CD-ROM下面的目录,软碟机,网路分享常被挂载在此),而且如果您是 Squid 使用者,"/var/spool/squid" (Squid的快取资料档)。一旦您选好了合适的档案,在您建立好的备份 profile 上按一下左键,然後在“Files >>” 钮上按一下左键将选好的档案移进您的备份 profile。

注意: 如果您的伺服器资料到巨大到无法实际存放到磁带中,您需要建立分别的备份 profiles,备份组中每部份一个。

实际进行备份时,将磁带放入,从 “File” 选单中选择 “Mount Tape” (或是用滑鼠敲一下看起来像磁带的图示)。

这样会 “挂载” 磁带 (事实上,因为磁带机是字元装置,事实上无法挂载它 -- 其实 KDat 只是先回带,试着去读取开头资讯,如果成功,找寻磁带机上符合的索引。否则,KDat 会提醒您格式化磁带。

(注意: 如果 KDat 持续反映没有磁带在磁带机但事实上有,您应该确定在参数中指定的磁带机名称正确,在选单栏中用滑鼠敲一下 “Edit” 选项然後选择“User Preferences”.)

一旦 KDat 已经挂载好磁带,在您开始备份前必须选择备份的 profile。当打算开始备份,只要在您要的备份 profile上敲一下右键,然後在“Backup”上敲一下左键。KDat 会先显示一个对话框告诉您有关您所选择备份 profile 的细节 ;在“Ok” 上敲一下左键就会开始备份。

当备份开始进行,KDat 会显示一个有各种状态资讯的对话框 (经过时间,备份大小,备份比率,估计剩馀时间,档案数量及总共写入 bytes 数),以及已经备份档案的列表。一个包含好几 gigabyte 资料的完全备份可能需要花上好几个小时。必要的话,在备份过程中任何时候您可以在“Abort” 钮上敲一下左键放弃备份。

一旦备份完成,您可以在选单栏中选择 “Edit”,再选 “Unmount Tape”以解挂载磁带,或在磁带图示上敲一下,这样磁带会回带然後跳出。

无疑地,比例行备份更重要的事就是当问题发生後能让重要档案正常回复 !

明显地,就像伺服器备份程序所讨论的,进行回存的程序依您所选择的备份方案而有所不同。在这一节,我将会讨论由 "tar" 及 "KDat"所备份的回存方法。
使用 "tar" 回存:

下面的指令会从 "full-backup-09-October-1999.tar.gz" 回存所有的档案,这是我们 Linux 系统的备份例 (按照在 使用"tar" 备份 一节中的命令例所做的):tar -zxvpf /archive/full-backup-09-October-1999.tar.gz

上面的命令会从 archive 档中取出所有的档案,保留原档案的拥有者及权限。 "x" 选项用来作解出(其他的选项在 使用"tar" 备份 这节中有提到:)

警告: 从一个 tar 的 archive档中解出档案可能是一件危险的事,因此必须谨慎进行。也许这些档案作时并未包括准备好的路径 (有一些被误导或未被告知的发展者散他们的档案时可能会这样),表示档案会被解到目前的目录下。也许档案压缩时有加上 "/" 斜线 (当备份档建立时指定 "--absolute-paths" 选项),表示档案会被回存到绝对位置 (即使您不愿意)。或者也许档案压缩时未加上 "/" 斜线, 表示档案会被解到目前的目录下 (即使您不愿意这样)。当然,全看备份是如何建立的。因为这个缘故,我强烈建议先在 "tar"命令加上"t" (type) 选项加以测试,然後当您完全确定命令会依您预期进行後将 "t" 换成"x" (extract) 。

如果您不需要回存 archive 中所有的档案,您可以指定一个或更多的档案,按照下面例 :
tar -zxvpf /archive/full-backup-09-October-1999.tar.gz etc/profile usr/local/bin/tolower

上面的命令会从例的档案回存 "etc/profile" 及 "usr/local/bin/tolower"

如果您只试着从您的 archive 档中回存一个或几个档案,除非您确实地指定和 archive 档中所存放相同的档名及路径,否则不会成功。下面的例会帮您解决问题:
tar -ztvpf /archive/full-backup-09-October-1999.tar.gz | grep -i profile

在上面的例,所有在 archive 档中的档案都以档名列出。所有的结果都会输出到 "grep" 指令 (使用 grep的"i" 选项可忽略混杂的情况),显示"profile"中任何档案的目录及档名。当您确实决定要回存的档名时,您可以用一般的 tar 指令表达指定所要回存的档案。

就像在 伺服器备份程序 所提到的,当建立一个 archive 档时, tar 会从档案路径去除前面的 "/" (斜线)符号。

这表示档案回存时可能不会在和备份时相同的位置结束。因此,不要改变到 "/" root 目录或者"--directory /" 选项。

注意: 一个更安全的方法是在不同的目录回存档案 (例如您的 home 目录),然後比对,搬移及更新档案到之後的原始位置。

使用"KDat"回存:
要从 KDat 建立的备份组回存一个或更多档案,将备份磁带放进磁带机,从“File”选单项目选择“Mount Tape”(或在磁带的图示上按下滑鼠左键) KDat 会试着从磁带读入开头资讯,如果成功的话,会试着找寻符合开头资讯的磁带索引。这个索引存在硬碟,是由 KDat 为所格式化的每一个备份磁带所做的唯一档案,每一次进行备份就会更新。如果符合的档案索引遗失了(也许您回存的备份组是由另一部机器所备份的,或是因为硬碟损毁而删除了索引档), KDat 会通知您这件事,并且如果可以读取磁带重建索引的话会询问您。由於您必须在您回存档案前先重建索引,按左键选择“Yes”是有意义的。

(注意: 一但磁带重新索引过,名称会变成“Reindexed Tape”。 您可以将它重新命名成原来的样子)

当磁带索引成功地读入,可以用来选择您想从备份组回存的档案或目录,和您建立备份档时所用的方法十分相同(查看 伺服器备份程序 有关选择档案过程的详细说明)。

当您选择好合适的档案,您可以从目录页中的“File”选项选择“Restore...”开始回存程序(或在磁带回存的图示上按滑鼠左键)。KDat会显示一个对话框,让您确认要回存的档案。此外,您有指定回存的档案所到目录的选项。这让您回存重要档案到您的 home 目录下,然後可以和预期位置中的档案做比较,移动或是更新。这实际上是最安全的回存档案方法。

要开始回复程序,在“Okay”钮上按一下,KDat 会扫描磁带并且开始回存选定好的档案。

有时,您会发现不使用 KDat 回存一个用 KDat 备份过的档案是必须或有帮助的。也许您想要在不提供图形介面的系统上回存这些档案,或是您的网路速度很慢而透过它执行 KDat 是不切实际。幸运地, KDat 使用 "tar" 工具写入备份资料, 在任何 *nix 系统都有的命令列工具。

如果您打算用 tar 回存用 KDat 建立的备份组,就像您回存用 tar 本身备份的普通备份组所做的选项一样。记住,资料组并未以压缩格式储存。

注意: 当您试着使用 tar 存取由 KDat 所做的备份组时,一定会得到错误讯息。这是因为当磁带第一次格式化时 KDat 加入了开头及其他资讯。重 tar 指令两三次就会跳到档案真正开头的地方。


系统备份与恢复常用命令

1. fbackup & frecover

A、系统备份命令: fbackup
1) fbackup的常用方式一:
[1] 进入单用户:
# init –s 或
# shutdown 0
[2] 系统全备份
# fbackup –f /dev/rmt/0m -0iv / -I /tmp/sysbk.index
-f : 设备文件名 ( such as DDS tape driver)
-i : 要包含的目录
-e: 不包含的目录
- I: 备份内容检索目录
- v: 备份内容详细列表
- 0 : 零级备份
# fbackup –f /dev/rmt/0m -i / -e /home
备份除了目录 /home的所有目录
[3] 说明
a、该命令方式对系统当前mounted的文件系统进行备份
b、备份级别说明
备份级别有0~9个级别,如果当前系统采用零级备份,当下一次采用5级备份时,系统仅将会对有变化的文件进行备份。
2) fbackup的常用方式二:
〖1〗 # mkdir -p /tmp/fbackupfiles/index
# mkdir -p /tmp/fbackupfiles/log
〖2〗 # touch/tmp/fbackupfiles/index/full.`date’+%y%m%d.%H:%M’`
〖3〗进入单用户
# shutdown –y 0
〖4〗对系统进行全备份
# fbackup –0vi / -f /dev/rmt/0m
-I /tmp/fbackupfiles/index/full.`date ’+%y%m%d.%H:%M’`
2 > /tmp/fbackupfiles/log/ full.`date ’+%y%m%d.%H:%M’`
〖5〗说明
通过该方式可以知道系统备份需要的时间
3) fbackup的常用方式三:
〖1〗进入单用户
# shutdown –y 0
〖2〗对系统进行全备份
# fbackup –0uv / -f /dev/rmt/0m
-g /tmp/fbackupfiles/mygraph
-I /tmp/fbackupfiles/index/full.`date ’+%y%m%d.%H:%M’`
2 > /tmp/fbackupfiles/log/ full.`date ’+%y%m%d.%H:%M’`
〖3〗说明
a、文件 mygraph: 包含需要备份的目录,格式如下:
/users/data
/home/app
e /oracle/sql
b、参数 u :
当备份系统成功时,系统将更新 /var/adm/fbackupfiles/dates.
4) fbackup的常用方式四:
备份远程系统
[1] 登录在本地系统时
# remsh backup_sysname ” fbackup –f DDS_sysname: /dev/rmt/0m -0vi / ”
[2] 登录在远程系统时
# fbackup –f backup_sysname: /dev/rmt/0m –0vi /
5) fbackup的常用方式五:
压缩方式备份( 不建议使用、影响系统性能)
[1] 压缩方式备份
# fbackup –0vi /dir -f - | compress | dd of=/dev/rmt/0m obs=10k
“-” : 指向标准输出
[2] 查看备份内容
# dd if=/dev/rmt/0m ibs=10k | uncompress | frecover –I - -f -

B、 系统恢复命令: frecover
1) 恢复磁带机上所有内容:
[1] 进入单用户:
# init –s or shutdown 0
[2] 恢复数据
# frecover –rf /dev/rmt/0m
恢复磁带上的所有数据
-f: 设备文件名
-r: 恢复磁带上的所有数据
-I: 将磁带上文件索引存到指定的文件中
# frecover –I /tmp/index.txt -f /dev/rmt/0m
2) 恢复某一目录:
# frecover -xi /directory
# frecover –x -i /dir1 -i /dir2
# frecover -xoi /dir
-o: 覆盖/dir下已有的、相同名称的文件
# frecover -xvXi /dir
-X: 按磁带上目录恢复数据
# cd /tmp/local; frecover –xvYi /dir
-Y: 按磁带上文件名恢复数据
例如:
# cd /tmp/local
# frecover –xvF -i /home/filename
[恢复结果] /tmp/local/filename 不是 /home/filename
3) 从远程磁带机上恢复数据到本地:
# frecover –xi /dir –f remote_name : /dev/rmt/0m
4) 从本地磁带机上恢复数据到远地系统:
# remsh remote_name ”frecover –xi /dir -f local_name:
/dev/rmt/0m”

2. tar 命令
1) 对系统全备份
# tar cvf /dev/rmt/0m /
2) 备份某目录
# tar cvf /dev/rmt/0m /tmp
3) 改变文件的备份路径
# tar cvf /dev/rmt/0m -C /tmp .
注意 : 路径 /tmp 在磁带上的备份路径变为 ./
# cd /tmp
# tar cvf /dev/rmt/0m ./*
4) 恢复数据
# tar xvf /dev/rmt/0m (磁带上所有数据)
# tar xvf /dev/rmt/0m /tmp ( 恢复目录 /tmp )
5) 查看磁带上的数据
# tar tvf /dev/rmt/0m

3. SAM
1) 备份数据
# sam
-----> Select “ Backup and Recovery “
----->Select “ Interactive Backup and Recovery “
---- >Select “ Backup Device “
---- > Select “ Backup Files Interactively “ ( From [ Action ] menus )
----- > Select Backup Scope
----- > Select Local File Systems Only ( no NFS )
----- > Select “ OK “
2) 检查备份的数据
[1] 检查文件 /var/sam/log/br_log

注意:如果 Exit code=2,指示在备份过程中有问题。
[2] 查看磁带上有那些文件
# frecover –rNsv –f /dev/rmt/0m
4. Copyutil
1) 如何启动 “ Copyutil “
[1] 从CD boot , 进入ISL
BOOT_ADMIN>boot scsi.n.m ( path of CDROM drive----such as scsi.4.0)
[2] ISL>ode copyutil
Type help for command information
[3] ISL_CMD>copyutil
please wait while scan device bussess…

TY Indx Path Product ID Bus Size Rev

D 0 16/5.6.0 SEAGATEST31230N disk drive SCSI 1.0 GB HPM4
D 1 16/5.5.0 SEAGATEST31230N disk drive SCSI 1.0 GB HPM4
T 2 16/5.0.0 HPC1504[X]/HPC1521B DDS tape SCSI n/a 1009

2) 备份系统硬盘上的所有数据
COPYUTIL>backup
Enter the disk index ([q]/?): 0
Enter the Tape index ([q]/?): 2
Use data compression? (y/[n])? Y
When backup finished, system will show: DONE!
COPYUTIL> exit
3) 恢复数据到指定的系统硬盘上
COPYUTIL> restore
Enter the Tape index ([q]/?): 2
Enter the disk index ([q]/?): 0
Use data compression? (y/[n])? Y
After system display: Restored Successful, that means restore is finished!
COPYUTIL> exit
4) 注意:
当用copyutil备份Root Disk到相应的磁带时,该磁带可以作为bootable磁 带使用
5. make_recovery
1) 安装 “Ignite-UX application”
[1] 从 “ HP-UX Application CD-ROM “ 上安装
1) # swinstall
2) “Mark” [A. 1.53 HP-UX Installation Utility( Ignite-ux for 10.20)]
3) “Analysis”
4) “Install”
[2] 从 WebSite 下载并安装:
a、 http://www.software.hp.com/
Select : “ Network & System administration ”
Download: “ ignite-ux_10.20.tar”(10.20 为 OS 版本)
b、 从硬盘上安装:
# cd /tmp
# tar xvf /dev/rmt/0m ./ignite-ux_10.20.tar
# swinstall –s /tmp/ignite-ux_10.20.tar
c、 从磁带上安装:
# dd if=/tmp/ignite-ux_10.20.tar of=/dev/rmt/0m bk=2
# swinstall –s /dev/rmt/0m
[3] make_recovery:
/opt/ignite/bin/make_recovery [-AprvC] [-d destination] [-b boot_destination]
-A : 指定要备份整个Root disk / Volume Group
-p : 预览备份过程,并不创建 Bootable DDS Tape
a. 确认 /var/opt/ignite/recovery/mkrec.append 文件
b. 创建 /var/opt/ignite/recovery/arch.include 文件
-r : 使用 –p 选项后,可以用该选项创建 Bootable DDS Tape
a. 该选项可以识别/var/opt/ignite/recovery/arch.include文件
-v : 用于显示备份过程的提示信息
-d : 指定DDS 的设备文件名 ( default: /dev/rmt/0mn )
-b : 指定系统备份过程中,用到的临时文件
(default: /var/tmp/uxinstlf recovery )
该文件大小为32M,对系统进行make_recovery时,要注意 /var文件系统的大小,当/var文件系统大小不足时,可用如下命令对系统进行备份:
# make_recovery –A -C -b /tmp/uxinstlf.recovery
-C : 创建反映系统当前状态的文件:
/var/opt/ignite/recovery/makrec.last
如果该文件存在,那么可以用 check_recovery 命令
[4] 注意:
用make_recovery备份的磁带是bootable 磁带,用它可以安装OS。
2) 备份系统Root Disk
[1] 创建“最小”OS 的 bootable DDS tape (default 设备文件: /dev/rmt/0mn)
# make_recovery
[2] 创建“最小”OS的 bootable DDS tape
(设备文件:/dev/rmt/c0t1d1BESTn)
# make_recovery –d /dev/rmt/c0t1d1BESTn
[3] 先预览,再创建 bootable DDS tape
# make_recovery -p
# vi /var/opt/ignite/recovery/arch.include
# make_recovery -r
[4] 复制 整个 Root Disk
# make_recovery -A
[5] 复制 整个 Root Disk, 且生成反映系统当前状态的文件:
( /var/opt/ignite/recovery/makrec.last )
# make_recovery -C -A
[6] 实例分析:
(1) 系统文件系统:
Filesystem kbytes used avail %used Mounted on
/dev/vg01/osdepot 2621440 2530838 84872 97% /osdepot
/dev/vg01/lvol1 480341 58696 373610 14% /var
/dev/vg01/lvol7 378965 297521 43547 87% /usr
/dev/vg01/lvol6 588643 245540 284238 46% /opt
/dev/vg00/lvol3 107669 38577 58325 40% /
/dev/vg00/lvol1 67733 12409 48550 20% /stand
/dev/vg00/lvol4 30597 19 27518 0% /tmp
/dev/vg00/lvol5 19861 1416 16458 8% /home
(2) 分析:
[a] make_recovery:
vg00: /stand, /sbin, /dev, /etc, /tmp, /home
vg01: parts of /opt and /var (see Core-OS list)
/usr/bin, /usr/lib
/usr/obam, /usr/sam,
/usr/share, /usr/ccs,
/usr/conf, /usr/lbin,
/usr/contrib, /usr/local,
/usr/newconfig
[b] make_recovery -A:
vg00: 备份Root Volume Group 上的所有数据
vg01: 备份non-Root volume Group 上的所有数据
只有当/usr 位于non-root volume group时,
该 non-root volume group 上的所有数据也将被备份到磁带上
3) 恢复磁带上的所有数据
(1) 非交互式恢复系统
[1] 在磁带机中,插入系统恢复带
[2] Boot 系统
[3] 中断Boot 流程,进入 Boot_admin> 提示下
[4] Boot_admin> bo 8/16.0.0
8/16.0.0: 磁带机的 hardware path
[5] 选取 “ non-interactive ”
[6] 等待系统恢复完毕
(2) 交互式恢复系统
[1] 在磁带机中,插入系统恢复带
[2] Boot 系统
[3] 中断Boot 流程,进入 Boot_admin> 提示下
[4] Boot_admin> bo 8/16.0.0
8/16.0.0: 磁带机的 hardware path
[5] 不选取 “ non-interactive ”
[6] 选取
a. [ Install HP-UX ]
b. [ ] Advanced Installation
c. 配置或改变如下选项:
disks, file systems,
hostname, IP ddress,
timezone, root password,
DNS server, and gateway
[7] 选取 [install continue… ],直到系统恢复完毕