Linux是个稳定而可靠的环境。不过所有计算系统都有无法预料的事件,比如硬件故障。拥有关键设置信息的可靠备份是所有负责任的管理计划的组成部分。在Linux中能通过各种各样的方法来执行备份。所涉及的技术从非常简单的脚本驱动的方法,到精心设计的商业化软件。备份能保存到远程网络设备、磁带驱动器和其他可移动媒体上。备份能是基于文件的或基于驱动器映像的。可用的选项非常多,你能混合搭配这些技术,为你的环境设计最佳的备份计划。

确定策略能采用许多不同的方法来备份系统。欲了解关于这方面的一些信息,你能阅读本文结尾处

参考资料

中列出的“Introduction to Backing Up and Restoring

Data”一文。

所备份的内容非常大程度上取决于你备份他们的理由。你是否试图从严重的故障(比如硬盘驱动器问题)中恢复?你是否想归档以便能在需要时恢复旧的文件?你计划从一个冷系统和还原着手,还是从一个预加载的备用系统着手?

1、确定要备份的内容

在备份和还原系统时,Linux 基于文件的性质成了一个极大的好处。在

视窗系统系统中,注册表和系统是非常相关的。设置和软件安装不仅仅是将文件放到系统上。因此,还原系统就需要有能够处理 视窗系统

这种特性的软件。在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 目录。

2、备份工具

正如前面提到过的, Linux

备份在非常大程度上就是打包和解包文件。这允许使用现有的系统实用工具和脚本来执行备份,而不必购买商业化的软件包。在许多情况下,这类备份将是足够的,并且为管理员提供了极大的控制能力。备份脚本能使用

cron 命令来自动化,这个命令控制 Linux 中预定的事件。

(1)tar

tar 是个已移植到 Linux 中的经典 UNIX 命令。 tar

是tapearchive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。如果你下载过

Linux 原始码,或许已碰到过 tar

文件。这是个基于文件的命令,他本质上是连续地、首尾相连地堆放文件。

使用 tar

能打包整个目录树,这使得他特别适合用于备份。归档文件能全部还原,或从中展开独立的文件和目录。备份能保存到基于文件的设备或磁带设备上。文件能在还原时重定向,以便将他们重新放到一个和最初保存他们的目录(或系统)不同的目录(或系统)。

tar 是和文件系统无关的。他能使用在 ext2、ext3、 jfs、Reiser

和其他文件系统上。

使用 tar 非常类似于使用诸如 PKZip

这样的文件实用工具。只需将他指向一个目的(能是文件或设备),然后指定你想要打包的文件。你能通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程式。要通过

bzip2 压缩或解压缩文件,可使用 tar -z 命令。

要使用 tar 来把除 /proc 目录之外的整个文件系统备份到 SCSI

磁带设备:

tar -cpf /dev/st0 / --exclude=/proc

在上面的例子中, -c 开关表示归档文件正在被创建。 -p 开关表示我们希望保留文件许可权限,这对良好的备份来说是非常关键的。 -f

开关指向该归档文件的文件名。在本例中,我们使用的是原始磁带设备 /dev/st0。/

表示我们想要备份的内容。既然我们想要备份整个系统,因此把这个开关指定为根(root)。当把 tar 指向一个目录(以 /

结尾)时,他会自动递归。最后,我们排除了 /proc

目录,因为他没有包含需要保存的所有内容。如果单盒磁带容纳不下这个备份,我们需要添加 -M

开关(本例中没有显示)以进行多卷备份。

以防万一

不要忘了 Linux 是区分大小写的。例如, tar 命令应该总是以小写的形式执行。命令行开关能是大写、小写或大小写的混合。例如,

-t 和 -T

执行不同的功能。文件或目录名称能混合使用大小写,而且就像命令和命令行开关相同,是区分大小写的。

要还原一个或多个文件,能使用带提取开关( -x )的 tar

命令:

tar -xpf /dev/st0 -C /

这里的 -f 开关同样指向归档文件, -p 开关表明我们想要还原归档的权限。 -x 开关表明从归档中提取文件。 -C /

表明我们想要让还原从 / 开始。 tar 通常还原到运行这个命令的目录。 -C

开关使我们的当前目录不再相关。

你可能会经常使用的另外两个 tar 命令是 -t 和 -d 开关。 -t 开关列出某个归档文件的内容。 -d

开关将归档文件的内容和系统上的当前文件作比较。

为便于操作和编辑,你能将想要归档的文件和目录放进一个文本文件中,然后在命令行通过 -T

开关引用这个文本文件。这些文件和目录能和命令行上列出的其他目录结合起来。下面的命令行备份 MyFiles 中列出的所有文件和目录、/

根目录和 /tmp 目录中的所有 iso 文件。

tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso

文件列表只是个文本文件,其中列出文件或目录。下面是个例子:

/etc

/var

/home

/usr/local

/opt

请注意 tar -T (或 files-from

)命令不能接受通配符。文件必须明确地列出。上面的例子展示了一种独立地引用文件的方法。你还能执行脚本来搜索系统,然后建立一个列表。下面就是这样一个脚本的例子:

#!/bin/sh

cat MyFiles > TempList

find /usr/share -iname *.png >>

TempList

find /tmp -iname *.iso >>

TempList

tar -cpzMf /dev/st0 -T TempList

上面的脚本首先将 MyFiles 中的所有现有文件列表复制到 TempList。然后他执行两个 find

命令来搜索文件系统中匹配某个模式的文件,并将他们附加到 TempList。第一次是搜索 /usr/share 目录树中以 .png

结尾的所有文件。第二次是搜索 /tmp 目录树中以 .iso 结尾的所有文件。在建立好列表之后, tar 然后在文件设备

/dev/st0 (第一个 SCSI 磁带设备)上创建 一个新的归档文件,该文件使用

gzip

格式来压缩,并保留所有文件权限。该归档文件将跨越多个卷。要归档的文件的名称将从 TempList

文件中提取。

还能使用脚本来执行更精细的操作,比如增量备份。Gerhard Mourani

在他的Securing

and Optimizing Linux一书中给出了一个优秀的脚本,你可在本文结尾处的

参考资料

中找到关于这本书的信息。

也能编写脚本来还原文件,虽然还原通常是手动进行的。正如上面提到过的,用于提取文件的 -x 开关代替了 -c

开关。能还原整个归档文件,或还原指定的个别文件或目录。使用通配符来引用归档文件中的文件是能的。还能使用开关来转储和还原。

(2)dump 和 restore

dump 能执行类似 tar 的功能。然而, dump

倾向于考虑文件系统而不是个别的文件。下面是引自 dump 手册文件中的内容:“dump 检查

ext2

文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上……大于输出媒体容量的转储将被划分到多

个卷。在大多数媒体上,容量是通过一直写入直至返回一个 end-of-media

标记来确定的。”

配合 dump 的程式是 restore

,他用于从转储映像还原文件。

restore

命令执行转储的逆向功能。能首先还原文件系统的完全备份,而后续的增量备份能在已还原的完全备份之上覆盖。能从完全或部分备份中还原独立的文件或目录树。

dump 和 restore 都能在网络上运行,因此你能通过远程设备进行备份或还原。 dump 和 restore

使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于 ext2 和 ext3 文件系统。如果使用的是 JFS、Reiser

或其他文件系统,你将需要其他的实用工具,比如 tar 。

使用 dump 执行备份

使用 dump 执行备份是相当简单的。下面的命令执行一个完全 Linux 备份,他把所有 ext2 和 ext3 文件系统备份到一个

SCSI 磁带设备。

dump 0f /dev/nst0 /boot

dump 0f /dev/nst0 /

在这个例子中,系统中有两个文件系统。一个用于

/boot,另一个用于/,这是常见的设置。他们必须在执行备份时独立地引用。

/dev/nst0 引用第一个 SCSI

磁带驱动器,不过是以非重绕的模式引用。这样确保各个卷在磁带上一个接一个地排列。

dump

的一个有趣特性是其内置的增量备份功能。在上面的例子中,0

表示 0

级或基本级备份。这是完全系统备份,你要定期执行以保存整个系统。对于后续的备份,你能使用其他数字(1-9)来代替

0,以改动备份级别。1 级备份会保存自从执行 0 级备份以来更改过的所有文件。2 级备份会保存自从执行

1

级备份以来更改过的所有文件,以此类推。使用 tar 和脚本能执行相同的功能,但需求脚本创建人员提供一种机制来确定上次备份是何时执行的。

dump 具有他自己的机制,即他在执行备份时会输出一个更新文件(/etc/dumpupdates)。这个更新文件将在每次执行 0

级备份时被重设。后续级别的备份会保留他们的标记,直至执行另一次 0 级备份。如果你在执行基于磁带的备份, dump

会自动跟踪多个卷。

跳过文件

标记将被 dump 跳过的文件和目录是能做到的。实现此目的的命令是 chattr ,他改动 ext2 和 ext3

文件系统上的扩展属性。

chattr +d

上面的命令向文件添加一个标记,让 dump

在执行备份时跳过该文件。

使用 restore 来执行还原

要还原使用 dump 保存的信息,能使用 restore 命令。像 tar 相同, dump 能够列出( -t

)归档文件的内容,并和当前文件作比较( -C )。使用 dump

?必须小心的地方是还原数据。有两种非常不同的还原方法,你必须使用正确的方法才能获得可预测的结果。

重建 (-r)

记住,在设计 dump 时考虑得更多的是文件系统,而不是独立的文件。因此,存在两种不同的文件还原风格。要重建一个文件系统,可使用 -r

命令行开关。设计重建的目的是为了能在空文件系统上操作,并将他还原为已保存的状态。在执行重建之前,你应该已创建、格式化和装载(mount)了该文件系统。不应该对包含文件的文件系统执行重建。

下面是使用上面执行的转储来执行完全重建的例子。

restore -rf /dev/nst0

上面这个命令需要针对要还原的每个文件系统分别执行。

在需要的时候,能重复这个过程来添加增量备份。

提取 (-x)

如果需要使用独立的文件而不是使用整个文件系统,你必须使用 -x 开关来提取他们。例如,要仅从我们的磁带备份中提取 /etc

目录,可使用以下命令:

restore -xf /dev/nst0 /etc

交互式还原 (-i)

restore 提供的另外一个特性是交互式模式。使用命令:

restore -if /dev/nst0

将把你置于交互式 shell

中,同时还显示了包含在该归档文件中的项。键入“help”将会显示一个命令列表。然后你就能浏览并选择希望提取的项。务必记住,你提取的所有文件都将进入当前目录。

dump 和 tar

dump 和 tar 都有一批拥护者。两者都各有好处和缺点。如果你运行的是除 ext2 或 ext3 之外的所有文件系统,那么

dump 就对你不可用。然而如果不是这种情况,那么只需最少的脚本就能运行 dump ,并且 dump

还具有可用于帮助还原的交互式模式。

我倾向于使用 tar ,因为我喜欢编写脚本来获得额外的控制级别。此外更有用于操作 .tar

文件的多平台工具。

(3)其他工具

在 Linux 中,所有能够复制文件的程式都能用来执行某种程度的备份。有人就使用 cpio 和 dd 来执行备份 。 cpio

是又一个和 tar 差不多的打包实用工具,但使用得不太普遍。 dd 是个文件系统复制实用工具,他产生文件系统的二进制副本。 dd

还可用于产生硬盘驱动器的映像,类似于使用诸如 Symantec 的 Ghost 这样的产品。然而, dd

不是基于文件的,因此你只能使用他来将数据还原到完全相同的硬盘驱动器分区。

(4)商业化备份产品

可用于 Linux 的商业化备份产品有非常多。商业化产品一般提供了便利的界面和报告系统,而在使用诸如 dump 和 tar

这样的工具时,你必须自食其力。商业化产品非常广泛,通常提供大量的特性。使用商业软件包的最大好处是,有一个预先建立的用于处理备份的策略,你能即时投入工作。商业化的研发人员已犯了你即将要犯的许多错误,他们的智慧的代价相比于丢失你的宝贵数据来说是廉价的。

Tivoli Storage Manager

Tivoli Storage Manager 或许是目前可用于 Linux 的最佳的商业化备份和存储管理实用工具。Tivoli

Storage Manager 服务器可运行在多种平台上,包括

Linux,而客户机则能运行在更多种类的平台上。

质上,Storage Manager

服务器是通过适合于备份该环境的设备来设置的。要参和备份的所有系统都要加载一个和服务器通信的客户机。备份能按计划执行、通过

Tivoli

Storage Manager 客户机界面手动执行,或使用基于 Web 的界面远程执行。

TSM

基于策略的性质意味着无需经常调整文件列表,就能够为备份行为定义中心规则。此外,IBM Tivoli Storage

Resource

Manager 还能够识别、评估、控制和预测企业存储资产的利用情况,能够检测潜在的问题并自动应用自修复调整。更多细节请参见

Tivoli

Web 站点(参见

参考资料

中的链接)。

图 1. Tivoli Storage Manager 菜单

然后备份和还原就通过远程设备来处理。

图 2. Tivoli Storage Manager 界面

前瞻和回顾

拥有良好备份的第一步是拥有计划。首先知道你需要保存的数据及需要什么恢复策略,然后使用最适合该策略的工具。

Linux 附带了一些现成的(out of the box)有用备份工具。其中两个最常用的是 tar 和 dump/restore

。两者都能执行完全系统备份。使用创造性的脚本,你能够设计一个自定义的方案来本地和远程地备份系统。

然而,编写自己的备份脚本可能是一项繁重的任务,对于复杂的企业来说更是如此。诸如 Tivoli Storage Manager

这样的商业化软件降低了学习难度,并允许你即时控制自己的备份,不过你可能必须调整自己的策略来适应这些工具的功能。

linux下修改ext3硬盘为nst,Linux系统备份与恢复相关推荐

  1. linux下修改ext3硬盘为nst,linux,系统备份

    篇一:linux系统备份与恢复教程 linux系统备份与恢复教程 引言: 操作系统:CentOS 6.0 Linux 备份软件:Clonezilla(再生龙) 软件下载地址: 下载好之后,可以刻录成光 ...

  2. linux下修改ext3硬盘为nst,Linux服务器数据备份恢复策略(3)

    cpio 命令操作举例 1. 拷贝当前目录中所有文件到磁带设备 /dev/rmt0,输入:find . | /usr/sysv/bin/cpio -oc >/dev/rmt0 2. 从 cpio ...

  3. 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...

    本篇文章给大家带来的内容是介绍如何在linux下修改mysql数据库密码?linux修改数据库密码的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. Linux下修改Mysql的 ...

  4. linux下修改windows密码忘记,不记得linux/windows中mysqlroot密码万能修改方法

    本文章来介绍一下在linux和windows不记得root密码的修改方法,有碰到此类问题的同学可以参考一下本文章来修改你的密码. 如果本地忘记了root密码 ,可以试试以下方法: 打开CMD首先停止服 ...

  5. linux下修改ip用哪个文件,linux下修改IP地址

    查看IP ifconfig [root@localhost ~]# ifconfig eth0: flags=4163 mtu 1500 ether 52:54:00:8a:fe:e6 txqueue ...

  6. linux下的磁盘配额简介暨 linux下加挂硬盘续

    linux下的磁盘配额简介暨 linux下加挂硬盘续 实验环境 VMware 6.5.2 +redhat Enterprise 5 as 以上是内核版本,还有方便起见加挂一块硬盘 这只是我的环境 实验 ...

  7. linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...

    linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...

  8. linux挂载固硬盘装,linux下安装新硬盘并挂载mount

    linux下安装新硬盘并加载使用手记 ================================================================================ ...

  9. 网关屏蔽mac地址,linux下修改mac地址方法

    局域网里有一台机器,同一网段内的机器,只有部分能够ping通,也无法ping通网关,现象很奇怪,尝试过修改IP,重启网络服务,都无法解决问题. 最后怀疑是不是网关将该机器mac地址给屏蔽掉了,因此修改 ...

最新文章

  1. python技术点总结_Python技术点总结,碰到问题再也不用慌了!
  2. Linux中的MySql数据库远程连接
  3. array initization in matlab zeros(1000)
  4. JavaScript如何中断循环执行?
  5. OS- -进程详详解
  6. 转载:使用 GNU Libtool 创建库
  7. 第 4 章  超链接和路径
  8. 【笔试/面试】—— 不使用大于、小于、if 语句,实现 max 宏
  9. 深度学习笔记_ RestNet-50
  10. 腾讯正式开源高性能Hybrid框架VasSonic!
  11. 原生JS获取元素在文档中的位置
  12. 谷歌开源芯片 180 纳米制造工艺
  13. Js中apply和call
  14. 基于Go语言Revel+Layui的OA办公系统
  15. Java log日志
  16. vue cli 接入 mock
  17. MSSQL Server查询优化方法
  18. uniApp开发小程序(7)使用mescroll配置上啦下拉的样式,以及分类页面的配置
  19. php 操作sqlite
  20. Java中使用AMQ的简单实例

热门文章

  1. 按键精灵入门指引——应用导向学习
  2. 衢州职业技术学院分数线平均计算机,衢州职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  3. 图片文字制作视差效果
  4. cpu实时数据是什么意思?
  5. React-18--css in js
  6. java在线测评系统_JavaWeb项目:在线评测系统
  7. 【云原生之企业级容器技术 Docker实战一】Docker 介绍
  8. (第六天)学习Python的元组,字典,集合,公共操作
  9. PythonPyCharm
  10. change事件做延迟处理