利用dump和restore实现Linux的备份和还原
2013-01-14 18:14
330 查看
对于系统而言,我们可以有很多种办法去备份(还原)系统或文件,之所以要去做备份,就是为了在系统或文件遭到损害时,能及时恢复,把损失减小到最小。当然,对于企业服务器而言,备份的重要性是举足轻重。咱们今天就详细讨论一下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。
功能说明:还原(Restore)由倾倒(Dump)操作所备份下来的文件或整个文件系统(一个分区)。
语 法:restore [-cCvy][-b <区块大小>][-D <文件系统>][-f <备份 文件>][-s <文件编号>] 或 restore [-chimvy][-b <区块大小>][-f <备份文 件>][-s <文件编号>] 或 restore [-crvy][-b <区块大小>][-f <备份文 件>][-s <文件编号>] 或 restore [-cRvy][-b <区块大小>][-D <文件系 统>][-f <备份文件>][-s <文件编号>] 或 restore [chtvy][-b <区块大 小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文 件...] 或 restore [-chmvxy][-b <区块大小>][-D <文件系统>][-f <备份文 件>][-s <文件编号>][文件...]
补充说明:restore 指令所进行的操作和dump指令相反,倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。
参 数:
-b<区块大小> 设置区块大小,单位是Byte。
-c 不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件。
-C 使用对比模式,将备份的文件与现行的文件相互对比。
-D<文件系统> 允许用户指定文件系统的名称。
-f<备份文件> 从指定的文件中读取备份数据,进行还原操作。
-h 仅解出目录而不包括与该目录相关的所有文件。
-i 使用互动模式,在进行还原操作时,restore指令将依序询问用户。
-m 解开符合指定的inode编号的文件或目录而非采用文件名称指定。
-r 进行还原操作。
-R 全面还原文件系统时,检查应从何处开始进行。
-s<文件编号> 当备份数据超过一卷磁带时,您可以指定备份文件的编号。
-t 指定文件名称,若该文件已存在备份文件中,则列出它们的名称。
-v 显示指令执行过程。
-x 设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内。
-y 不询问任何问题,一律以同意回答并继续执行指令。
1, 查看备份文档中的文件
-t参数是查看的意思,-f是指定要查看的备份文件。通过以上命令,就可以查看备份文件中备份了哪些文件。
1, 还原备份
还原备份的时候有两种方式可以选择,一种是完全还原,一种是有选择的部分还原。
咱们还是用前面的例子来看,如果你前面备份的/boot分区文件损坏了,这时候你想还原,可以按如下步骤:
-r参数表示重建
如果只是一部分数据丢失了,那么可以使用参数-i通过交互方式来实现文件的选择性还原
这个地方我故意删掉了一个文件initrd-2.6.18-53.el5.img
使用参数-i交互式,并指定备份文件。
通过?来查看可以使用的命令,ls是列出备份文件的内容
通过add来选择要恢复的文件,选定后再ls的时候会标记为*
通过extract还原选定的文件。
提示“Specify next volume”时填如1,它表示是在单独一卷磁带(这里我用的是磁盘的空间)上进行的备份。下面一行提示选“n”,表示不是恢复整个文件系统,而是单个文件。
一,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。
功能说明:还原(Restore)由倾倒(Dump)操作所备份下来的文件或整个文件系统(一个分区)。
语 法:restore [-cCvy][-b <区块大小>][-D <文件系统>][-f <备份 文件>][-s <文件编号>] 或 restore [-chimvy][-b <区块大小>][-f <备份文 件>][-s <文件编号>] 或 restore [-crvy][-b <区块大小>][-f <备份文 件>][-s <文件编号>] 或 restore [-cRvy][-b <区块大小>][-D <文件系 统>][-f <备份文件>][-s <文件编号>] 或 restore [chtvy][-b <区块大 小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文 件...] 或 restore [-chmvxy][-b <区块大小>][-D <文件系统>][-f <备份文 件>][-s <文件编号>][文件...]
补充说明:restore 指令所进行的操作和dump指令相反,倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。
参 数:
-b<区块大小> 设置区块大小,单位是Byte。
-c 不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件。
-C 使用对比模式,将备份的文件与现行的文件相互对比。
-D<文件系统> 允许用户指定文件系统的名称。
-f<备份文件> 从指定的文件中读取备份数据,进行还原操作。
-h 仅解出目录而不包括与该目录相关的所有文件。
-i 使用互动模式,在进行还原操作时,restore指令将依序询问用户。
-m 解开符合指定的inode编号的文件或目录而非采用文件名称指定。
-r 进行还原操作。
-R 全面还原文件系统时,检查应从何处开始进行。
-s<文件编号> 当备份数据超过一卷磁带时,您可以指定备份文件的编号。
-t 指定文件名称,若该文件已存在备份文件中,则列出它们的名称。
-v 显示指令执行过程。
-x 设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内。
-y 不询问任何问题,一律以同意回答并继续执行指令。
1, 查看备份文档中的文件
-t参数是查看的意思,-f是指定要查看的备份文件。通过以上命令,就可以查看备份文件中备份了哪些文件。
1, 还原备份
还原备份的时候有两种方式可以选择,一种是完全还原,一种是有选择的部分还原。
咱们还是用前面的例子来看,如果你前面备份的/boot分区文件损坏了,这时候你想还原,可以按如下步骤:
-r参数表示重建
如果只是一部分数据丢失了,那么可以使用参数-i通过交互方式来实现文件的选择性还原
这个地方我故意删掉了一个文件initrd-2.6.18-53.el5.img
使用参数-i交互式,并指定备份文件。
通过?来查看可以使用的命令,ls是列出备份文件的内容
通过add来选择要恢复的文件,选定后再ls的时候会标记为*
通过extract还原选定的文件。
提示“Specify next volume”时填如1,它表示是在单独一卷磁带(这里我用的是磁盘的空间)上进行的备份。下面一行提示选“n”,表示不是恢复整个文件系统,而是单个文件。
相关文章推荐
- 利用dump和restore实现Linux的备份和还原 推荐
- 利用dump和restore实现Linux的备份和还原
- 利用dump和restore实现Linux的备份和还原
- Linux下用dump实现备份和还原 ux下用dump实现备份和还原
- Linux下用dump实现备份和还原
- Linux下用dump实现备份和还原
- Linux下用dump实现备份和还原
- Linux下用dump实现备份和还原
- linux下完整备份工具:dump与还原工具restore
- 转使用bacula实现Linux的远程备份和还原
- Linux完整备份工具 - dump, restore(现在基本不用这两个)
- C#备份及还原数据库的实现代码(粗略) // 利用C#还原数据库(SQL SERVER)备份文件到指定路径
- linux下利用ruby做系统备份与还原
- (精)如何利用T_SQL实现数据库备份与还原处理之一--(如何利用sql语句,正确还原数据库)
- 利用T-SQL语句,实现数据库的备份与还原的功能
- linux利用shell脚本和cron实现定时备份、上传及垃圾日志清理(原创)
- linux下利用ruby做系统备份与还原
- Mongodb的备份/还原 mongodump/mongorestore
- Linux下利用七牛云和crontab实现定时自动备份
- Linux mysqldump 数据库备份与还原