一、确定数据备份策略
首先必须确定在备份过程中操作哪些文件。在商业环境中,这是非常困难的一个决定,而且会产生严重的影响。如果备份了太多数据,会导致备份系统的成本过于庞大,会削减其他方面的开支。如果没有备份足够的数据,那么重要的数据就可能会丢失。
备份整个系统非常简单(请确保不要备份NFS挂载的一些目录和诸如/proc/之类的特殊文件系统),但是通常这样备份的内容都太多了。如果整个系统盘上的数据都丢失了,那么在恢复任何数据之前,很可能不得不重新安装基本的操作系统。将这些系统文件保存在备份磁带上不是毫无意义的。因此,为了减少备份系统的成本(包括硬件、网络、系统负载和备份时间),通常应该只备份重要的文件。
共享程序:可以在多个系统中使用的公共程序。/usr/local或/opt目录常在多个系统之间共享,这些目录包含没有随操作系统提供的其他操作系统。
用户数据:包含所有用户数据和私人文件的用户主目录。
应用程序数据:在分布式计算环境中,应用程序的数据通常在多个系统之间共享。例如,Web服务器群集通常需要共享相同的内容。
系统信息:系统信息包括账户信息(用户、组和密码)、邮件别名、主机列表等。只有您才知道自己的数据保存在什么地方,在建立自己的备份系统之前,至少要好好想一想这个问题。虽然我不可能列出需要备份的每一份数据,但可以提供一些指导,包括:
重要的系统数据:不要忘记重要的系统数据,如/etc/目录中的文件,有时是/var/目录中的文件。如果这些文件都是自动生成的,那么可能只需要在主系统上备份这些文件。
后来添加的软件:包括系统中安装的任何非原操作系统所提供的软件。您可能已经将这些软件安装到/opt/或/usr/local/目录中了,这样可以简化这些软件的备份过程。或者,您也可能将所有这些程序都安装到一个集中的文件服务器上,这样会使备份过程更加简单。如果系统中安装了一些软件包,要确保保存这些已经安装好的包,并在备份过程中包含这些软件包。
应用程序的配置文件和数据:要考虑每个系统上正在运行哪些服务。如果一个系统正在运行DNS服务,则确保备份时包括区文件。如果系统正在运行Web服务,就要备份Web内容,有时候甚至要备份访问日志(这些日志可能很重要,也可能不重要)。
开发资源:如果有CVS仓库、bug数据库、知识库以及其他保存重要数据的开发工具,则应确保在备份中包括这些文件。
管理工具:不要忘记在备份过程中包括所有的系统自动化脚本和工具。
数据库:如果在一个或多个数据库中保存了一些数据,显然要在备份过程中包含这些数据,但是除此之外,还要确保对数据正确地进行备份。在很多情况中,为了正确地备份数据库的内容,可能需要关闭数据库或将数据进行转储。尽管有些数据库软件可以将数据导出并备份为适当的格式,但是有些备份软件可以在数据库运行时就对数据库进行备份。
用户数据:最后,系统中的用户通常都会非常感激您在备份时包括了他们私人的文件。如果有一个大型的文件服务器,那么这台机器就很适合执行备份,根据需要从其他系统中复制数据。
另外一个需要考虑的问题是备份过程对时间的要求是什么等级。如果使用磁带备份系统,而且只有一个磁带,那么不得不每天替换磁带上的数据。如果有人几天之后才意识到自己误删了一个文件,那他们实在是太不幸了。当然,如果所有的数据都可以保存在一个磁带上,那么解决方法就很简单——只需要购买
多个磁带即可。但是如果有大量的数据,那么情况就复杂多了。
二、存储磁带简介
磁带存储是相当广泛的范畴,包括DDS、LTO、DAT、DLT和SDLT等等。数十年来各种磁带成了传统的备份媒介。表1 是磁带技术列表:
磁带类型 | 磁带容量 | 最短寿命 |
DAT 磁带4 mm DDS | 4 GB (120米 DDS-2) | 3-4 年 |
12 GB (125米 DDS-3) | 3-4 年 | |
20 GB (150米 DDS-4) | 3-4 年 | |
8 mm tape | 7 GB (160 米) | 2-4 年 |
Mammoth-2 (AME) | 20 GB | 3-4 年 |
60 GB | 3-4 年 | |
AIT 磁带 | 35 GB | 3-4 年 |
50 GB | 3-4 年 | |
100 GB | 3-4 年 | |
DLT | 40 GB | 10 年 |
表1 磁带技术简介
注:DDS-3 和DDS-4 使用的技术与较早版本不同。最新的磁带驱动器才支持最大的磁带,但大多数驱动器提供只读的向后兼容性。
三、磁带管理命令
从用户的角度来看,Linux的任何设备都可以看做是文件。因此,可以“打开”合适的磁带驱动器文件来进行写入操作,将要备份的数据写入到文件中去。虽然这听上去过于简单了,但是实际情况就是这样。Unix系统把每一个设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。 从用户的角度来看,对设备的使用和一般文件的使用一样。所以管理磁带的最有效的方法是使用相关命令。
1.tar命令
tar命令是用来建立,还原备份文件的工具程序,如果您想根据一定的基本原则使用磁带而不是使用硬盘对数据进行备份,那么有几种选择。最常用的程序是tar,大部分UNIX类也都包含这个程序。下面介绍如何使用GNU tar进行一些简单的备份。如果只是希望在磁带上备份一个系统,这正是它功能强大的地方。也可以使用rsync从几个系统中先复制文件,然后使用tar将数据打包到磁带上。下面的例子都基于以下3点假设:
● 正在备份/home/目录。只需在适当的位置稍加修改即可指定其他目录或多个目录。
● 磁带驱动器是通过设备文件/dev/st0进行访问的。如果在Linux系统上只有一个SCSI磁带驱动器,那么正确的设备文件就是/dev/st0。如果并非如此,就需要使用适当的设备文件来匹配硬件设备。
● 本文使用的是腾保数据(TANDBERG DATA)最新的半高LTO Ultrium 2磁带机采用适用于半高磁带机读取的5.25英寸磁带,速度为48MBps,压缩后容量达400GB。如图。
图 半高LTO Ultrium 2磁带机
● 脚本是以root用户身份执行的,当前的工作目录是根目录(/)。
使用tar进行基本的备份
要使用tar在磁带上创建一个完全备份,可以运行下面的命令:
#tar cvpf/dev/st0home
选项c的意思是应该创建一个新的档案;选项v的意思是应该在将文件加入档案的同时显示这些文件;选项p的意思是所有的权限都应该保留;选项f的意思是档案应该被写入一个文件中(/dev/st0,它实际上表示您的磁带驱动器)。
使用tar创建增量备份
要创建一个简单的增量备份,可以使用GNU tar所提供的-N选项,它可以让您指定一个日期,并规定只有在该日期之后被创建或修改过的文件才会被包含在档案中。假设每天进行一次备份,可以使用下面的命令进行增量备份:
#tar cpf/dev/st0-N"$(date-d'1dayago')"home
下面这个脚本可以为您执行所有的备份:
#!/bin/bash |
假设备份脚本在每天早晨执行,就可以每天在脚本运行完成之后更换磁带。这样,您总可以今天换上明天用于备份的磁带。
磁带的备份
到现在为止,对于tar的讨论实际上是与备份介质完全无关的;tar将磁带当成与磁盘类似的设备来使用(不同之处在于当您使用磁盘时,要指定输出文件名,而不是磁带设备)。要将数据备份到实际的磁带上还可能出现其他挑战。首先,备份数据可能需要跨多个磁带。这可以使用--multi-volume(-M)开关实现:
#tar cpf /dev/st0- M home
如果备份数据要涉及多个磁带,就不能使用--gzip(-z)开关。如果在到达磁带末尾时tar检测到一个错误,就可以使用--tape-length(-L)开关指定磁带的大小(单位是KB):
#tar cpf/ dev/st0 -M-L 4000000 home
在这个例子中,我们指定使用一个4GB的磁带。
从tar包中恢复数据
从磁带上使用tar创建的备份包中恢复数据的速度都非常慢。在恢复数据时,不管是否使用增量备份,首先要确定的一点是以前的数据在什么时候是完好无损的。然后就可以根据这个时间点选择适当的磁带,并从这个磁带上提取出文件。如果需要查看在tar包中包含了哪些文件,可以使用t开关。注意这需要读取整个tar包,如果这个tar包保存在磁带上,其速度就会非常慢。
#tar tvf/dev/st0
可以将整个包在当前目录中展开:
#tar xvpf /dev/st0
也可以只展开特定的文件或目录。在下面这个例子中,我们可以只展开一个用户的整个主目录:
#tar xvpf /dev/st0 home/user1
或者,我们也可以只展开一个文件:
#tar xvpf /dev/st0 home/user1/file1
注意,即使只展开一个文件,也可能需要处理整个包。同理在磁带驱动器上,这样做的速度也会非常慢。
2.cpio命令
Cpio命令用于复制需要多个磁带卷的文件、特殊文件或文件系统。Cpio的命令参数太多,这里只介相关参数。
将目录中的所有文件复制到磁带。步骤如下:
1. 转到包含要复制的文件的目录。
2. 将可写磁带插入磁带机中。
3. 将文件复制到磁带。使用命令:
$ ls | cpio -oc > /dev/st0
参数说明:ls 为 cpio 命令提供文件名列表;cpio -oc 指定 cpio 命令应该在复制出模式 (-o) 下操作,并以 ASCII 字符格式 (-c) 写入头信息。这些选项确保可移植到其他供应商的系统。> /dev/stn :指定输出文件。
系统会将目录中的所有文件复制到指定磁带机中的磁带,同时会覆写该磁带中的任何现有文件。屏幕将显示复制的总块数。
应用实例:
将/export/home/目录中的所有文件复制到磁带:
$ cd /export/home/kryten |
从磁带中恢复所有文件 (cpio)
如果已使用相对路径名创建了归档文件,则恢复文件时会在当前目录中以目录形式生成输入文件。但是,如果已使用绝对路径名创建了归档文件,则将使用相同的绝对路径在系统中重新创建该文件。步骤如下:
1. 转到要放置文件的目录。
2. 将磁带插入磁带机。
3. 从磁带中提取所有文件。 命令如下:
$ cpio -icvd < /dev/st0
3. tar 和cpio命令对比
在某些情况下,特别是单用户系统,并不需要复杂的备份过程tar和cpic的这样的简单磁带命令完全可以定期地把重要数据保存到磁带上。tar和cpio还能够备份通过NFS加载的本地和远程文件系统。表2 是tar和 cpio 命令的对比和优缺点
命令 | 功能 | 优点 | 缺点 | 是否可识 别文件 系统边界 | 是否支 持多卷 备份 |
tar | 用于将文件和目录子树复制到单个磁带。 | l 可以在大多数 UNIX 操作系统中使用 l 可以轻松访问公共域版本 | 不可识别文件系统边界; 全路径名的长度不能超过 255 个字符; 不能用于创建多个磁带卷; | 否 | 否 |
cpio | 用于复制需要多个磁带卷的文件、特殊文件或文件系统。或者,当要将文件从运行当前的的系统复制到运行的系统时使用。 | l 与使用 tar 命令相比,可以更有效地将数据打包到磁带 l 恢复时跳过磁带中所有的错误点 l 提供以不同的头格式编写文件的选项(如 tar、ustar、crc、odc、bar),以实现不同系统类型之间的可移植性 l 创建多个磁带卷 | 该命令的语法比 tar 命令更为复杂。 | 否 | 是 |
表 2 tar 和 cpio 命令的优点和缺点
1. mt命令
mt命令用来控制磁带机。可以使用 mt 命令的 status 选项来获取有关磁带机的状态信息。mt 命令可报告配置文件 /kernel/drv/st.conf 中介绍的所有磁带机的信息。
mt命令格式:mt [ -f device ] command [ count ] ,
mt -f /dev/st0 status 检视磁带机的硬件信息。
mt -f /dev/st0 erase 将磁带机中的磁带进行数据删除动作。
mt -f /dev/st0 rewind 将磁带进行回带动作。
mt -f /dev/st0 offline 将磁带进行回带并由磁带机中退出。
mt–f /dev/st0 unload 将磁带由磁带机中退出。
mt -f /dev/st0 compression off 将硬件压缩功能关闭。
pax命令
对POSIX兼容的系统来说,pax命令提供了比tar或者cpio更好的移植性。当拷贝要求多盘磁带卷的文件、特殊文件或者文件系统或者你想要将文件拷进或着拷出POSIX兼容的系统时,都可以使用pax命令。
1.拷贝一个目录中所有的文件到磁带上
使用下面的步骤来用pax命令将当前目录下的所有文件拷贝到磁带上。
(1)改变到包含想要拷贝的文件的目录中。
(2)向磁带驱动器中插入可写磁带。
(3)输入pax -w -f > /dev/st0 并回车。-w选项将当前目录里写的内容写到磁带上。-f选项标识出磁带驱动器。命令最后的据点(.)指明了当前目录。Pax命令在拷贝时并列出拷贝的文件。
(4)输入pax -l -f < /dev/st0并回车。-l选项列出了磁带上的文件来确认已经拷贝完成的文件。
(5)从磁带驱动器中拿出磁带并在磁带标签上写明文件名。
下面的例子向驱动器0中磁带上拷贝所有文件。
%pax -w -f > /dev/st0
2.恢复磁带上所有的文件
使用下面的步骤来用pax命令将磁带上所有的文件拷贝到当前的目录中。
(1)改变到想要拷贝文件的目录中。
(2)向磁带驱动器中插入可写磁带。
(3)输入pax -r -f < /dev/st0 并回车。-r选项将磁带上的内容读取到当前目录。-f选项标识磁带驱动器。命令末尾句点(.)指明当前工作目录。Pax命令在拷贝时并不列出拷贝文件。
(4)输入ls -l并回车。
Ls -l 命令列出了当前目录下的文件及其许可权,以此来验证文件拷贝的完成。
(5)从磁带驱动器中拿走磁带并在磁带标签上写下文件名。
下面的例子显示了从驱动器0中的磁带上拷贝所有的文件。
% pax -r -f /dev/rmt/0 |
更多的信息参见pax手册。
四、做好磁带机和存储介质的维护
磁带机和磁带是服务器备份的好工具,但是磁带也有些不利因素:
● 磁带对热和电磁场非常敏感,如果处理不当很容易出错。电磁场由计算机周围的各种常用设备产生,包括UPS 电源、包含电源的外围设备、显示器和扬声器等。
此外,仅仅是读取磁带也会影响数据。
● 磁带是连续存储设备。为了访问磁带上某个指定的文件,必须使磁带卷动到正确的某个点。这对于较老的磁带驱动器常常会出问题。当前的高端驱动器能够在数秒内访问到任意一点。
针对以上缺陷应当采取以下措施:
1. 请定期清洁和检查磁带机,以确保其正确操作。请将磁带存储在远离磁性设备的无尘安全位置。
2. 应该创建一个日志并对其进行维护,该日志用于跟踪存储每个作业(备份)的介质(磁带卷)和每个备份文件的位置。
3. 注意物理安全。在保存备份磁带的位置,应该考虑一般性的物理安全:必须保护磁带免遭偷窃、蓄意破坏以及可能的环境破坏。
4. 正确保存磁带介。一些媒介有特殊的要求,必须加以考虑。比如盒式磁带的磁带卷轴要垂直放置(垂直于地面,就像汽车的轮胎一样),并且与驱动器接触的边朝下(从而重力把磁带拖离磁带轴)。