Linux下用dump实现备份和还原

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

时间: 2024-10-16 13:54:15

Linux下用dump实现备份和还原的相关文章

Linux下用dump实现备份和还原 ux下用dump实现备份和还原

对于系统而言,我们可以有很多种办法去备份(还原)系统或文件,之所以要去做备份,就是为了在系统或文件遭到损害时,能及时恢复,把损失减小到最小.当然,对于企业服务器而言,备份的重要性是举足轻重.咱们今天就详细讨论一下LINUX中如何用dump和restore实现备份和还原. 一,dump的原理,优点及限制 dump和restore默认已经安装在RHEL5中,如果你使用的Linux中没有,可以自己去google中搜一下并下载安装. 使用dump命令时,它会建立一份自上次备份操作以来进行修改过的文件列表

linux下 mysql数据库的备份和还原

1.备份 1 [[email protected] ~]# mysqldump -u root -p mysql > ~/mysql.sql #把数据库mysql备份到家目录下命名为mysql.sql 2 Enter password: 3 [[email protected] ~]# ls ~/mysql.sql /root/mysql.sql 2.还原 [[email protected] ~]# mysql -u root -p web < ~/web.sql #把web.sql导入数据

linux下 mysql数据库的备份和还原sql

1.备份 1 [[email protected] ~]# mysqldump -u root -p mysql > ~/mysql.sql #把数据库mysql备份到家目录下命名为mysql.sql 2 Enter password: 3 [[email protected] ~]# ls ~/mysql.sql 4 /root/mysql.sql 2.导入 [[email protected] ~]# mysql -u root -p web < ~/web.sql #把web.sql导入

linux下仅仅有rman备份集的异机不同文件夹恢复

昨天在客户那里做了一次rman异机的恢复,把生产库弄一份给測试库用,总库大概80G,总共花费了2个小时,当时客户的环境是windows 11.2.0.3,今天早晨在linux下又一次測试了一下,记录下来供大家參考 环境: 全部操作都是按主机名区分 源库: 主机名  bre1  实例名为bre1  数据文件文件夹在/u01/app/oradata下 目标库: 主机名 bre2   数据文件准备放在/bre1/oradata下 废话不多说,以下是实际操作步骤 1.在源库创建备份集,而且复制到目标库

linux下core dump【总结】

1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看.同事鄙视的眼神,我依然在目.后来学会了从core文件中分析原因,通过gdb看出程序挂再哪里,分析前后的变量,找出问题的原因.当时就觉得很神奇,core文件是怎么产生的呢?难道系统会自动产生,可是我在自己的linux系统上面写个非法程序测试,并没有产生core问题?这又是怎么回事呢?今天在ngnix的

dump工具下,资料的备份与还原

1.备份 dump -0j -f dump.bz2 目录/文件 2.还原 restore -i -f dump.bz2 ls.cd.pwd   //基本脚本命令 add 文件/目录   //添加要解压的文件/目录 delete 文件/目录  //删除要解压的文件/目录/ extract //开始进行解压 1 //1个volume,应该是一个根目录 set owner/mod for '.'[y/n] :n //结束 是否修改权限 quit 退出 //引用鸟哥的linux私房菜,第9章.P264

Linux下使用crontab定时备份日志

上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 备份文件加上时间戳date +%Y%m%d%H%M%S 以上是备份说明,下面分三步操作 一.shell脚本 [[email protected] lampp]# vi test.sh    #创建shell脚本 #!/bin/bash                                

Linux下mysql主从同步备份master-slave详细配置

1.概要首先要准备两台服务器,一台主服务器(Master),另一台从服务器(Slave),然后要保证Master与Slave的版本要相同且Master不能高于Slave的版本,一般稳健的做法都是使其版本相同,因为MySQL不同版本之间的binlog(二进制日志)格式可能会不一样,最后会导致同步出现异常.介绍先到这里,以下我们先确认两台服务器的信息: 主服务器(Master):IP:192.168.1.100系统:Linux(Ubuntu 64位 v10.10)MySQL版本:5.1.49需要同步

linux下使用tar增量备份

使用 tar -g 参数进行增量备份实验 完整备份: #建立测试路径与档案mkdir kerryhutouch kerryhu/{a,b,c}在kerryhu下生成三个文件 #执行完整备份tar -g king -zcvf  kerryhu_full.tar.gz kerryhu cat king 1270531376 #查看 tarball 内容tar -ztf kerryhu_full.tar.gzkerryhu/kerryhu/akerryhu/bkerryhu/c 增量备份: #新增一个