首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Windows 到 Linux 之旅 第 8 部分. 备份与恢复-1

Windows 到 Linux 之旅 第 8 部分. 备份与恢复-1

Linux 是一个稳定而可靠的环境。但是任何计算系统都有无法预料的事件,比如硬件故障。拥有关键配置信息的可靠备份是任何负责任的管理计划的组成部分。在Linux 中可以通过各种各样的方法来执行备份。所涉及的技术从非常简单的脚本驱动的方法,到精心设计的商业化软件。备份可以保存到远程网络设备、磁带驱动器和其他可移动媒体上。备份可以是基于文件的或基于驱动器映像的。可用的选项很多,您可以混合搭配这些技术,为您的环境设计理想的备份计划。
确定策略可以采用许多不同的方法来备份系统。欲了解关于这方面的一些信息,您可以阅读本文结尾处 中列出的“Introduction to Backing Up and Restoring Data”一文。            
所备份的内容很大程度上取决于您备份它们的理由。您是否试图从严重的故障(比如硬盘驱动器问题)中恢复?您是否想归档以便能在需要时恢复旧的文件?您计划从一个冷系统和还原着手,还是从一个预加载的备用系统着手?
确定要备份的内容在备份和还原系统时,Linux 基于文件的性质成了一个极大的优点。在 Windows 系统中,注册表与系统是非常相关的。配置和软件安装不仅仅是将文件放到系统上。因此,还原系统就需要有能够处理Windows 这种特性的软件。在 Linux 中,情况就不一样了。配置文件是基于文本的,并且除了直接处理硬件时以外,它们在很大程度上是与系统无关的。硬件驱动程序的现代方法是,使它们以动态加载的模块的形式可用,这样内核就变得更加与系统无关。不同于让备份必须处理操作系统如何安装到系统和硬件上的复杂细节,Linux备份处理的是文件的打包和解包。
一般情况下,以下这些目录是需要备份的:
  • /etc
    包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
  • /var
    包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
  • /home
    包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
  • /root
    是根(root)用户的主目录。
  • /opt
    是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
有些目录是应该考虑                备份的。            
  • /proc
    应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
  • /dev
    包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份/dev 是没有必要的。
其他目录包含系统文件和已安装的包。在服务器环境中,这其中的许多信息都不是自定义的。大多数自定义都发生在 /etc 和/home 目录中。不过出于完整性的考虑,您可能希望备份它们。
在生产环境中,我希望确保数据不会丢失,因而我会备份除 /proc 目录之外的整个系统。如果最担心用户和配置,我会仅备份 /etc、/var、/home和 /root 目录。
备份工具正如前面提到过的, Linux 备份在很大程度上就是打包和解包文件。这允许使用现有的系统实用工具和脚本来执行备份,而不必购买商业化的软件包。在许多情况下,这类备份将是足够的,并且为管理员提供了极大的控制能力。备份脚本可以使用                 cron 命令来自动化,这个命令控制 Linux 中预定的事件。            
tartar 是一个已移植到 Linux 中的经典 UNIX 命令。                 tar 是                 tape                archive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。如果您下载过Linux 源代码,或许已经碰到过 tar 文件。这是一个基于文件的命令,它本质上是连续地、首尾相连地堆放文件。            
使用                 tar 可以打包整个目录树,这使得它特别适合用于备份。归档文件可以全部还原,或从中展开单独的文件和目录。备份可以保存到基于文件的设备或磁带设备上。文件可以在还原时重定向,以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。                 tar 是与文件系统无关的。它可以使用在 ext2、ext3、 jfs、Reiser 和其他文件系统上。            
使用                 tar 非常类似于使用诸如 PKZip 这样的文件实用工具。只需将它指向一个目的(可以是文件或设备),然后指定您想要打包的文件。您可以通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程序。要通过bzip2 压缩或解压缩文件,可使用                  tar -z 命令。            
要使用                  tar 来把除 /proc 目录之外的整个文件系统备份到 SCSI 磁带设备:            
1
tar -cpf /dev/st0 / --exclude=/proc




在上面的例子中,                 -c 开关表示归档文件正在被创建。                 -p 开关表示我们希望保留文件许可权限,这对良好的备份来说是很关键的。                 -f 开关指向该归档文件的文件名。在本例中,我们使用的是原始磁带设备 /dev/st0。/ 表示我们想要备份的内容。既然我们想要备份整个系统,因此把这个开关指定为根(root)。当把                 tar 指向一个目录(以 / 结尾)时,它会自动递归。最后,我们排除了 /proc 目录,因为它没有包含需要保存的任何内容。如果单盒磁带容纳不下这个备份,我们需要添加                 -M 开关(本例中没有显示)以进行多卷备份。            
以防万一不要忘了 Linux 是区分大小写的。例如,                     tar 命令应该总是以小写的形式执行。命令行开关可以是大写、小写或大小写的混合。例如,                     -t 和                     -T 执行不同的功能。文件或目录名称可以混合使用大小写,而且就像命令和命令行开关一样,是区分大小写的。               

要还原一个或多个文件,可以使用带提取开关(                 -x )的                 tar 命令:            
1
tar -xpf /dev/st0 -C /




这里的                 -f 开关同样指向归档文件,                 -p 开关表明我们想要还原归档的权限。                 -x 开关表明从归档中提取文件。                 -C / 表明我们想要让还原从 / 开始。                 tar 通常还原到运行这个命令的目录。                 -C 开关使我们的当前目录不再相关。            
您可能会经常使用的另外两个                 tar 命令是                 -t 和                 -d 开关。                 -t 开关列出某个归档文件的内容。                 -d 开关将归档文件的内容与系统上的当前文件作比较。            
为便于操作和编辑,您可以将想要归档的文件和目录放进一个文本文件中,然后在命令行通过                 -T 开关引用这个文本文件。这些文件和目录可以与命令行上列出的其他目录结合起来。下面的命令行备份MyFiles 中列出的所有文件和目录、/ 根目录和 /tmp 目录中的所有 iso 文件。            
1
tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso




文件列表只是一个文本文件,其中列出文件或目录。下面是一个例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
/etc
           
          <br>
/var
           
          <br>
/home
           
          <br>
/usr/local
           
          <br>
/opt




请注意                 tar -T (或                 files-from )命令不能接受通配符。文件必须明确地列出。上面的例子展示了一种单独地引用文件的方法。您还可以执行脚本来搜索系统,然后建立一个列表。下面就是这样一个脚本的例子:            
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/sh
           
          <br>
cat MyFiles > TempList
           
          <br>
find /usr/share -iname *.png >> TempList
           
          <br>
find /tmp -iname *.iso >> TempList
           
          <br>
tar -cpzMf /dev/st0 -T TempList




上面的脚本首先将 MyFiles 中的所有现有文件列表复制到 TempList。然后它执行两个                 find 命令来搜索文件系统中匹配某个模式的文件,并将它们附加到TempList。第一次是搜索 /usr/share 目录树中以                 .png 结尾的所有文件。第二次是搜索 /tmp 目录树中以                 .iso 结尾的所有文件。在建立好列表之后,                 tar 然后在文件设备 /dev/st0 (第一个 SCSI 磁带设备)上创建 一个新的归档文件,该文件使用 g                zip 格式来压缩,并保留所有文件权限。该归档文件将跨越多个卷。要归档的文件的名称将从TempList 文件中提取。            
还可以使用脚本来执行更精细的操作,比如增量备份。Gerhard Mourani 在他的                Securing and OptimizingLinux 一书中给出了一个优秀的脚本,您可在本文结尾处的 中找到关于这本书的信息。            
也可以编写脚本来还原文件,虽然还原通常是手动进行的。正如上面提到过的,用于提取文件的                 -x 开关代替了                 -c 开关。可以还原整个归档文件,或者还原指定的个别文件或者目录。使用通配符来引用归档文件中的文件是可以的。还可以使用开关来转储和还原。
返回列表