您的位置:首页 > 运维架构 > Linux

利用dump和restore实现Linux的备份和还原

2010-12-01 17:52 429 查看
申明:本文为“老毛”原创,如需转载,请与作者联系。否则将视为侵权行为,作者将追究其法律责任。

 

对于系统而言,我们可以有很多种办法去备份(还原)系统或文件,之所以要去做备份,就是为了在系统或文件遭到损害时,能及时恢复,把损失减小到最小。当然,对于企业服务器而言,备份的重要性是举足轻重。咱们今天就详细讨论一下
LINUX

中如何用
dump


restore

实现备份和还原。

 

一,
dump

的原理,优点及限制

dump


restore

默认已经安装在
RHEL5

中,如果你使用的
Linux

中没有,可以自己去
google

中搜一下并下载安装。

使用
dump

命令时,它会建立一份自上次备份操作以来进行修改过的文件列表,然后把这些文件打包成一个单独的文件。在做备份时,需要指定一个备份级别,它是
0-9

之间的一个整数。级别为
N

的转储会对从上次进行的级别小于
N

的转储操作以来修改过的所有文件进行备份,而级别
0

就是完全备份。通过这种方式,可以很轻松的实现增量备份,差异备份,甚至每日备份。例如,第一次备份时可选择级别
0

(具体操作看后面),以后每天做增量备份时就可以每天依次使用级别
1

,级别
2

,级别
3

等等
… …

;当需要每天做差异备份时,可先选择级别
0

做完整备份,然后每天都使用同一大于
0

的级别就行了,比如说第二天用
5

,第三天也用
5

,第四天也一样。

使用
dump

的优点:

1

,备份可以跨多卷磁带

2

,能备份任何类型的文件,甚至是设备

3

,备份时,文件的权限,宿主,宿组,修改时间等都会被保存

4

,能够正确处理从未包含任何数据的文件块(孔洞文件)

5

,能够做增量,差异备份

它也有不足:

1

,每个文件系统必须单独转储备份

2

,只有本地计算机的文件系统才能够转储备份(
rdump


rrestore

可用来弥补此项不足)

当然,使用
tar

也可以用来实现备份和还原,但
tar

只能在
Linux


Unix

环境下使用,对于跨平台的环境,
dump

使用起来个人感觉更方便一些。

如果有条件,
dump

也可以将备份存储在磁带上。
Linux

通常用
/dev/st0

代表倒带设备,而用
/dev/nst0

代表非倒带设备,使用倒带设备存储时,当磁带用完它会自动倒带并接着存储,所以会覆盖以前的数据,这样就存在以前数据丢失的风险。这个地方咱们就不详细讨论了。

 

二,
dump

的格式,常用参数及使用

格式:
dump [-level#] [-acmMnqSuv] [-A file] [-B records] [-b blocksize]

            
[-d density] [-D file] [-e inode#,inode#,...] [-E file]

            
[-f file] [-h level] [-I nr errors] [-j zlevel] [-Q file]

            
[-s feet] [-T date] [-y] [-z zlevel] filesystem

常用参数
   
Level

:备份级别
0-9

           
-B:

指定用来备份的磁带的长度,以
KB

为单位(有些磁带不支持以结束标志判断时,就需要使用到此参数

           
-b

:指定块大小,默认为
10

           
-d

:指定密度,默认为
1600BPI

           
-D:

设定存储数据库的名称和路径,默认是
/etc/dumpdates

文件

           


-e


-E

:与备份文件的
inodes

数有关的参数)

            
-f

:指定备份文件的路径和名称

            
-u

:更新数据库文件
/etc/dumpdates 

            
-s

:统计备份所需的空间,一般在备份前做,以防磁带或磁盘空间不足

举例:

dump  
–0s /dev/sda1

     

完整备份
/dev/sda1

前统计一下需多大容量

 

dump -0u –f /tmp/boot.dump /boot



 

以完全备份的方式备份
/boot

分区到文件
/tmp/boot.dump,

并且更新
/etc/dumpdates

数据库文件。“
0

”代表的就是备份级别为完全备份。“
u”

更新数据库,会将文件的日期,存储级别,文件系统等信息都记录下来。如果从来都不使用
-u

参数,那么所有的存储都会变为级别
0

。因为,系统不会有先前备份过当前文件系统的记录。

     

当以后更改了
/boot,

比如说内核升级后,如果再想备份,可以按下列方式:

     
dump -1u –f /tmp/boot1.dump /boot

  
   

这样就只会备份完全备份后有变化的文件(级别
1

大于
0

)。

     

如果以后想做增量备份,就依次用级别
2


3


4… …

     

如果想做差异备份,以后就一直用级别
1.

关于增量备份和差异备份的区别看看下图吧,不详细讲了:





三,查看备份文档中的文件及还原

查看备份文档中的文件和还原就需要用到另外一个工具,
restore



1,
 

查看备份文档中的文件



-t

参数是查看的意思,
-f

是指定要查看的备份文件。通过以上命令,就可以查看备份文件中备份了哪些文件。

1,
 

还原备份

还原备份的时候有两种方式可以选择,一种是完全还原,一种是有选择的部分还原。

咱们还是用前面的例子来看,如果你前面备份的
/boot

分区文件损坏了,这时候你想还原,可以按如下步骤:



-r

参数表示重建

 

如果只是一部分数据丢失了,那么可以使用参数
-i

通过交互方式来实现文件的选择性还原



这个地方我故意删掉了一个文件
initrd-2.6.18-53.el5.img



使用参数
-i

交互式,并指定备份文件。

通过?来查看可以使用的命令,
ls

是列出备份文件的内容



通过
add
来选择要恢复的文件,选定后再
ls
的时候会标记为
*



通过
extract

还原选定的文件。

提示“
Specify next volume”

时填如
1

,它表示是在单独一卷磁带(这里我用的是磁盘的空间)上进行的备份。下面一行提示选“
n

”,表示不是恢复整个文件系统,而是单个文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息