存储 频道

专家教你如何做好Linux磁带机备份

  【IT168 资讯】首先必须确定在备份过程中操作哪些文件。在商业环境中,这是非常困难的一个决定,而且会产生严重的影响。如果备份了太多数据,会导致备份系统的成本过于庞大,会削减其他方面的开支。如果没有备份足够的数据,那么重要的数据就可能会丢失。 

  备份整个系统非常简单(请确保不要备份NFS挂载的一些目录和诸如/proc/之类的特殊文件系统),但是通常这样备份的内容都太多了。如果整个系统盘上的数据都丢失了,那么在恢复任何数据之前,很可能不得不重新安装基本的操作系统。将这些系统文件保存在备份磁带上不是毫无意义的。因此,为了减少备份系统的成本(包括硬件、网络、系统负载和备份时间),通常应该只备份重要的文件。
  共享程序:可以在多个系统中使用的公共程序。/usr/local或/opt目录常在多个系统之间共享,这些目录包含没有随操作系统提供的其他操作系统。

  用户数据:包含所有用户数据和私人文件的用户主目录。

  应用程序数据:在分布式计算环境中,应用程序的数据通常在多个系统之间共享。例如,Web服务器群集通常需要共享相同的内容。

  系统信息:系统信息包括账户信息(用户、组和密码)、邮件别名、主机列表等。只有您才知道自己的数据保存在什么地方,在建立自己的备份系统之前,至少要好好想一想这个问题。

  重要的系统数据:不要忘记重要的系统数据,如/etc/目录中的文件,有时是/var/目录中的文件。如果这些文件都是自动生成的,那么可能只需要在主系统上备份这些文件。

  后来添加的软件:包括系统中安装的任何非原操作系统所提供的软件。您可能已经将这些软件安装到/opt/或/usr/local/目录中了,这样可以简化这些软件的备份过程。或者,您也可能将所有这些程序都安装到一个集中的文件服务器上,这样会使备份过程更加简单。如果系统中安装了一些软件包,要确保保存这些已经安装好的包,并在备份过程中包含这些软件包。

  应用程序的配置文件和数据:要考虑每个系统上正在运行哪些服务。如果一个系统正在运行DNS服务,则确保备份时包括区文件。如果系统正在运行Web服务,就要备份Web内容,有时候甚至要备份访问日志(这些日志可能很重要,也可能不重要)。

  开发资源:如果有CVS仓库、bug数据库、知识库以及其他保存重要数据的开发工具,则应确保在备份中包括这些文件。

  管理工具:不要忘记在备份过程中包括所有的系统自动化脚本和工具。

  数据库:如果在一个或多个数据库中保存了一些数据,显然要在备份过程中包含这些数据,但是除此之外,还要确保对数据正确地进行备份。在很多情况中,为了正确地备份数据库的内容,可能需要关闭数据库或将数据进行转储。尽管有些数据库软件可以将数据导出并备份为适当的格式,但是有些备份软件可以在数据库运行时就对数据库进行备份。

  用户数据:最后,系统中的用户通常都会非常感激您在备份时包括了他们私人的文件。如果有一个大型的文件服务器,那么这台机器就很适合执行备份,根据需要从其他系统中复制数据。

  另外一个需要考虑的问题是备份过程对时间的要求是什么等级。如果使用磁带备份系统,而且只有一个磁带,那么不得不每天替换磁带上的数据。如果有人几天之后才意识到自己误删了一个文件,那他们实在是太不幸了。多个磁带即可。但是如果有大量的数据,那么情况就复杂多了。

  1.tar命令

  tar命令是用来建立,还原备份文件的工具程序,如果您想根据一定的基本原则使用磁带而不是使用硬盘对数据进行备份,那么有几种选择。最常用的程序是tar,大部分UNIX类也都包含这个程序。下面介绍如何使用GNU tar进行一些简单的备份。如果只是希望在磁带上备份一个系统,这正是它功能强大的地方。也可以使用rsync从几个系统中先复制文件,然后使用tar将数据打包到磁带上。

  使用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
  # Where to place backup log files
  LOG_DIR="/usr/local/var/backup_logs"
  # Which directories to include in backup
  DIRS="home"
  # Which output file or tape device to use
  DEV="/dev/st0"
  today=$(date +%a)
  cd /
  case $today in
  Mon)
  # Full backup
  tar cvpf $DEV $DIRS
  mt -f $DEV rewind
  mt -f $DEV offline
  ;;
  Tue Wed Thu Fri)
  # Partial backup
  tar cvpf $DEV -N "$(date -d ''1 day ago'')" $DIRS
  mt -f $DEV rewind
  mt -f $DEV offline
  ;;
  *)
  # Weekend, do nothing
  ;;
  假设备份脚本在每天早晨执行,就可以每天在脚本运行完成之后更换磁带。这样,您总可以今天换上明天用于备份的磁带。
  磁带的备份

  到现在为止,对于tar的讨论实际上是与备份介质完全无关的;tar将磁带当成与磁盘类似的设备来使用(不同之处在于当您使用磁盘时,要指定输出文件名,而不是磁带设备)。要将数据备份到实际的磁带上还可能出现其他挑战。首先,备份数据可能需要跨多个磁带。这可以使用--multi-volume(-M)开关实现:

  #tarcpf/dev/st0-Mhome

  如果备份数据要涉及多个磁带,就不能使用--gzip(-z)开关。如果在到达磁带末尾时tar检测到一个错误,就可以使用--tape-length(-L)开关指定磁带的大小(单位是KB):

  #tar cpf/dev/st0-M-L4000000home

  在这个例子中,我们指定使用一个4GB的磁带。

  从tar包中恢复数据

 

  从磁带上使用tar创建的备份包中恢复数据的速度都非常慢。在恢复数据时,不管是否使用增量备份,首先要确定的一点是以前的数据在什么时候是完好无损的。然后就可以根据这个时间点选择适当的磁带,并从这个磁带上提取出文件。如果需要查看在tar包中包含了哪些文件,可以使用t开关。注意这需要读取整个tar包,如果这个tar包保存在磁带上,其速度就会非常慢。

  #tar tvf/dev/st0

  可以将整个包在当前目录中展开:

  #tarxvpf/dev/st0

  也可以只展开特定的文件或目录。在下面这个例子中,我们可以只展开一个用户的整个主目录:

  #tarxvpf/dev/st0home/user1

  或者,我们也可以只展开一个文件:

  #tarxvpf/dev/st0home/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
  $ ls   cpio -oc > /dev/st0
  16 blocks
  $ cpio -civt < /dev/st0
  -rw-r--r-- 1 root other 0 Jul 28 14:59 2008, filea
  -rw-r--r-- 1 root other 0 Jul 28 14:59 2008, fileb
  -rw-r--r-- 1 root other 0 Jul 28 14:59 2008, filec
  drwxr-xr-x 2 root other 0 Jul 28 14:59 2008, letters
  16 blocks

  从磁带中恢复所有文件 (cpio)

  如果已使用相对路径名创建了归档文件,则恢复文件时会在当前目录中以目录形式生成输入文件。但是,如果已使用绝对路径名创建了归档文件,则将使用相同的绝对路径在系统中重新创建该文件。步骤如下:

  1. 转到要放置文件的目录。
  2. 将磁带插入磁带机。
  3. 从磁带中提取所有文件。 命令如下:
  $ cpio -icvd < /dev/st0
  3. 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
  % ls -l
  更多的信息参见pax手册。

  做好磁带机和存储介质的维护

  磁带机和磁带是服务器备份的好工具,但是磁带也有些不利因素:

  磁带对热和电磁场非常敏感,如果处理不当很容易出错。电磁场由计算机周围的各种常用设备产生,包括UPS 电源、包含电源的外围设备、显示器和扬声器等。
  磁带是连续存储设备。为了访问磁带上某个指定的文件,必须使磁带卷动到正确的某个点。这对于较老的磁带驱动器常常会出问题。当前的高端驱动器能够在数秒内访问到任意一点。

  针对以上缺陷应当采取以下措施:
  1. 请定期清洁和检查磁带机,以确保其正确操作。请将磁带存储在远离磁性设备的无尘安全位置。
  2. 应该创建一个日志并对其进行维护,该日志用于跟踪存储每个作业(备份)的介质(磁带卷)和每个备份文件的位置。
  3. 注意物理安全。在保存备份磁带的位置,应该考虑一般性的物理安全:必须保护磁带免遭偷窃、蓄意破坏以及可能的环境破坏。
  4. 正确保存磁带介。一些媒介有特殊的要求,必须加以考虑。比如盒式磁带的磁带卷轴要垂直放置(垂直于地面,就像汽车的轮胎一样),并且与驱动器接触的边朝下(从而重力把磁带拖离磁带轴)。

0
相关文章