Linux系统备份与恢复
序言:前面一篇文章简单地介绍了Linux系统备份与恢复的相关概念,这里接着上一篇介绍两个常用的备份与恢复命令。
1 常见的备份命令
在介绍下面的备份恢复命令之前先简单的说明一下:
如果我们只是要实现完全备份,那我们可以直接使用tar命令,将需要备份的重要数据进行打包压缩,然后使用cp命令进行复制来实现备份。再写一个备份脚本,通过定时任务在指定的时间来运行这个脚本就可以实现完全备份。
但是如果是要想实现增量备份,用自己去写备份脚本的方式来做的话就会非常地麻烦,因为需要判断哪些是备份的新文件等等一些繁琐的操作。
为了更加便捷地使用增量备份,Linux系统提供了非常方便的备份恢复工具。下面就介绍两个比较常用的备份恢复命令dump和restore。
1.1 备份命令:dump命令
注意:dump命令在有些centos系统中默认是没有安装的,需要手动进行安装。那么我们可以通过如下命令事先查询一下系统是否已经安装dump命令。
- [root@localhost~]# rpm -qa |grep dump
操作结果如图1所示:
图1 查看系统是否已经安装dump命令
如图1所示,在查询结果中,我们只看到有一个tcpdump命令。这个是Linux系统的抓包命令,不是dump命令。所以这里显示的是系统并没有安装dump命令,需要我们手动进行安装。此时,如果确定系统的yum源可以使用的话,只需要执行以下命令,系统就会自动将dump命令默认安装。
- [root@localhost~]# yum -y install dump
操作结果如图2所示:
图2 安装dump命令
安装完dump命令之后,再来看一下dump命令的基本命令格式:
[root@localhost~]# dump [选项] 备份之后的文件名 原文件或目录
选项说明:
-level:备份级别。(一共十个备份级别,具体格式为“-0”~“-9”:“-”和具体的级别数字之间没有空格。其中0就是完全备份;1就是第一次增量备份;2就是第二次增量备份。。。最多支持9次增量备份。)
-f 文件名:手工指定备份之后的文件名。
-u:备份成功之后,把备份时间记录在/etc/dumpdates文件中。
-v:显示备份过程中国更多的输出信息。
-j:调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式。
-W:显示允许被dump的分区的备份等级及备份时间。
我们先来看一下备份分区,首先,可以通过如下命令查看系统分区:
- [root@localhost~]# df -h
操作结果如图3所示:
图3 查看系统分区
在这里呢,因为boot的分区容量最小,备份起来更节省时间,所以就用boot分区来做一个备份的演示。但是在实际的工作当中,一般情况下,boot分区是不需要备份的,因为每一个安装的Linux系统,只要版本是一致的,它的boot分区里的内容就都是一样的。这里仅仅只是为了方便演示dump命令,节省备份演示时间,而选用boot分区进行备份。
示例:
- [root@localhost~]# dump -0uj -f /root/boot.bak.bz2 /boot/
说明:备份命令。先执行一次完全备份,并压缩和更新备份时间
操作结果如图4所示:
图4 完全备份分区
注意:压缩文件的时候一定要标明压缩格式(即标明压缩文件名称后面的诸如“.bz2”的信息),避免事后需要手工解压缩的时候因为不清楚压缩格式而造成解压过程的繁琐。
- [root@localhost~]# cat /etc/dumpdates
说明:查看备份时间文件,了解文件是在什么时间进行备份的,也就是每次执行dump操作的具体时间。
操作结果如图5所示:
图5 查看备份时间文件
注意:上述进行的是一个完全备份,那么要进行增量备份的话,就需要先向原文件中增加新的数据。首先,我们通过如下命令来查看一下备份文件的大小
- [root@localhost~]# ll -h
说明:查看备份文件的详细信息
操作结果如图6所示:
图6 查看完全备份分区文件的详细信息
可以看到,完全备份后的压缩文件大小为30M,现在我们再来给原文件添加一个新的文件,比如说添加上面显示的安装日志文件install.log。通过如下所示命令,将28K的系统安装日志文件install.log复制到/boot分区中:
- [root@localhost~]#cp install.log /boot/
说明:复制日志文件到/boot分区
当然,对于启动分区boot来说,不建议向其中存放过多的内容,避免造成该分区的内存占用过大,导致系统无法启动。
此处只是为了演示的方便,演示操作完成之后会将添加进去的文件删除的。
数据新增完成之后,我们再来看看1级别的增量备份操作:
- [root@localhost~]#dump -1uj -f /root/boot.bak1.bz2 /boot/
说明:增量备份/boot分区,并压缩。
操作结果如图7所示:
图7 1级别增量备份分区
备份完成之后再来查看一下文件详情:
- [root@localhost~]# ll -h
操作结果如图8所示:
图8 查看1级别备份分区详情
可以看到,1级别备份文件boot.bak1.bz2的大小只有19K,并不包含之前的30M的完全备份的数据内容。同样的。再来查看一下备份时间文件
- [root@localhost~]# cat /etc/dumpdates
操作结果如图9所示:
图9 查看备份时间文件信息
如图9所示,可以看到很明显的备份级别区分。
此时,如果你需要隔一段时间就进行一次增量备份,就可以写一个脚本,通过定时任务来实现上述的备份操作。
最后再来看看选项“W”的功能:
- [root@localhost~]# dump -W
说明:查询整个分区的备份时间及备份级别的详细信息
操作结果如图10所示:
图10 查询整个分区的备份时间及备份级别的详细信息
可以看到,根分区和home分区显示的是从来没有备份过,而boot分区则显示的是最后一次进行备份的备份级别和备份时间。
以上就是使用dump命令来备份分区的基本操作。接下来需要了解的是如果想要备份文件或者目录,我们应该要怎么操作:
- [root@localhost~]# dump -0j -f /root/etc.dump.bz2 /etc/
说明:完全备份/etc/目录。
操作结果如图11所示:
图11 备份目录
注意:如果是备份目录,则只能使用0级别进行完全备份,而不再支持增量备份。也就是说,dump只有在备份分区的时候才可以执行增量备份,否则如图12所示,系统将会报错:
图12 1级别增量备份目录报错
1.2 恢复命令:restore命令
[root@localhost~]# restore [模式选项] [选项]
模式选项说明:restore命令常用的模式有以下四种,且在使用的时候这四个模式只能择其一,不能混用。
-C:比较备份数据和实际数据的变化。
-i:进入交互模式,手工选择需要恢复的文件。
-t:查看模式,用于查看备份文件中拥有哪些数据。
-r:还原模式,用于数据还原。
选项说明:
-f:指定备份文件的文件名
示例:
(1)比较备份数据和实际数据的变化
首先需要模拟一下原数据毁损或丢失的场景,例如破坏boot分区中的数据或文件。先通过如下命令查看一下boot分区中有哪些文件:
- [root@localhost~]# ll /boot
操作结果如图13所示:
图13 查看boot分区中的文件
然后通过如下命令来模拟破坏其中的某些文件,例如镜像文件vmlinuz-2.6.32-642.el6.x86_64:
- [root@localhost~]#mv /boot/vmlinuz-2.6.32-642.el6.x86_64/boot/vmlinuz-2.6.32-642.el6.x86_64.bak
说明:把/boot目录中的内核镜像文件改个名字。
注意:在做演示的时候一定要记得演示完成之后要记得将该文件名再更改过来,否则会造成系统关机以后无法启动。
再来演示一下“-C”模式能否比较出现有文件与备份文件之间存在不同(即是否能够发现现有文件发生了变化)。
- [root@localhost~]#restore -C -f /root/boot.bak.bz2
操作结果如图14所示:
图14 -C模式功能演示
可以看到,系统提示我在前面修改过的镜像文件找不到了,存在一个比较错误。这就是“-C”模式的功能。
这个时候,我们可以通过备份恢复来将boot分区恢复,也可以直接像刚才那样再把文件名称修改过来。在这里,我先直接把文件名修改过来,避免后面忘了恢复导致系统关机后无法启动了,等演示完了所有模式之后再来演示恢复功能,
同样的,我们也可以顺便看看文件名修改正确以后再次使用“-C”进行比较会是个什么效果:
- [root@localhost~]#mv /boot/vmlinuz-2.6.32-642.el6.x86_64.bak/boot/vmlinuz-2.6.32-642.el6.x86_64
- [root@localhost~]#restore -C -f /root/boot.bak.bz2
操作结果如图15所示:
图15 -C模式功能演示2
可以看到,现在系统不会再提示有比较错误了。
(2)查看模式
- [root@localhost~]#restore -t -f boot.bak.bz2
操作结果如图16所示:
图16 查看备份文件中拥有哪些数据信息
(3)还原模式
下面先演示一下怎么还原boot.bak.bz2分区备份:
首先通过如下命令创建一个目录,然后进入该目录中进行恢复操作,避免恢复的过程中文件解压的到处都是。
- [root@localhost~]#mkdir bootbak
- [root@localhost~]#cd bootbak/
先还原完全备份的数据:
- [root@localhostbootbak]# restore -r -f /root/boot.bak.bz2
说明:恢复的同时会进行解压缩。
操作结果如图17所示:
图17 恢复完全备份数据
可以看到,/boot分区的数据文件全部解压到当前目录下了。再恢复增量备份数据:
- [root@localhostbootbak]# restore -r -f /root/boot.bak1.bz2
操作结果如图18所示:
图18 恢复增量备份数据
可以看到,拷贝到/boot分区的系统日志文件也被解压到当前目录下了。
再来看看怎么还原目录备份,例如现在要还原前面备份的/etc/目录的备份etc.dump.bz2。为了简单一点,我们就在刚刚恢复备份分区时创建的目录中恢复/etc/目录的备份:
首先把该文件中刚刚恢复的分区备份数据都删掉,再来恢复我们的目录备份:
- [root@localhostbootbak]# rm -rf *
- [root@localhostbootbak]# restore -r -f /root/etc.dump.bz2
操作结果如图19所示:
图19 恢复目录备份
最后,要记得把前面进行演示的时候拷贝到boot分区中的系统日志文件删除。但是,切记,一定不要删错了文件,误删了boot分区的原有的文件!
Linux系统备份与恢复的更多相关文章
- linux系统下sd卡的备份与恢复
linux系统下sd卡的备份与恢复 现在各种的开发板都是从sd卡上面启动的,因此大修改工作之前很有必要备份一下. 备份 在linux系统下用读卡器读取sd卡 用df -h命令看分区的路径 一般都是/d ...
- FC8下备份linux系统
linux系统可以使用tar来备份.<br><br> 我在FC8上装好了totem, mplayer, audacious, 并搞定了wifi后,我觉得该备份一下FC8系统.& ...
- Linux系统——MySQL基础(二)
# MySQL数据库完全备份与恢复## 数据库备份的分类1. 从物理与逻辑的角度,备份可以分为物理备份和逻辑备份.(1)物理备份:对数据库操作系统的物理文件(数据文件.日志文件)的备份.物理备份又可分 ...
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...
- 14个Linux系统安全小妙招,总有一招用的上!
对于互联网IT从业人员来说,越来越多的工作会逐渐转移到Linux系统之上,这一点,无论是开发.运维.测试都应该是深有体会.曾有技术调查网站W3Techs于2018年11月就发布一个调查报告,报告显示L ...
- Centos7系统备份与恢复教程
原文地址:https://www.cnblogs.com/fang888/p/8473485.html Centos系统备份与恢复教程 tar: 特点 1.保留权限 2.适合备份整个目录 3.可以选择 ...
- Linux系统磁盘管理(lvm逻辑卷管理)
linux系统用户常遇到的一个问题就是如何精准的评估分区的大小,已分配合适的磁盘空间:普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文 ...
- 在Linux系统下运行微信Web开发者工具
微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
随机推荐
- ARC 101E.Ribbons on Tree(容斥 DP 树形背包)
题目链接 \(Description\) 给定一棵\(n\)个点的树.将这\(n\)个点两两配对,并对每一对点的最短路径染色.求有多少种配对方案使得所有边都至少被染色一次. \(n\leq5000\) ...
- [SNOI2017]一个简单的询问
[SNOI2017]一个简单的询问 题目大意: 给定一个长度为\(n(n\le50000)\)的序列\(A(1\le A_i\le n)\),定义\(\operatorname{get}(l,r,x) ...
- Microsoft visual Studio2017 中番茄visual assist 破解
百度查下,会发现VS(visual Studio)小番茄的破解有很多,但无外乎两种,第一种是输入注册码的,但是大多数[99%之上]都是无效的key值:还有一种是替换文件的.由于网络给的资料太多,也杂乱 ...
- unity3d 射线的原理,基础用法
射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 . Ray射线类和RaycastHit射线投射信息类是射线中常用的两个工具类. 用途:射线多 ...
- C# Request 获取Url
1.获取页面,HttpContext.Current.Request也是Request //获取当前页面url string myurl = System.Web.HttpContext.Curren ...
- Oracle层次查询和分析函数在号段选取中的应用
转自:http://www.itpub.net/thread-719692-1-1.html 摘要一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的 ...
- 中文分词组件:thulac及jieba试用手记
一.THULAC THULAC由<清华大学自然语言处理与社会人文计算实验室>研制推出的一套中文词法分析工具包.官网地址:http://thulac.thunlp.org,该项目提供了多种语 ...
- 【ZH奶酪】如何用sklearn计算中文文本TF-IDF?
1. 什么是TF-IDF tf-idf(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术.tf-idf是一种统计方法 ...
- SQL2012 之 创建备份计划
打开数据库,选择 管理 → 右键维护计划→选择新建维护计划,填写计划名称,如下图: 修改维护计划参数,如下图: 工具箱->备份数据库任务,拖到计划里,如下图: 编辑“备份数据库”任务,如下图: ...
- expdp ORA-39070:Unable to open the log file
Oracle中,当执行expdp或impdp的时候,有时候会出现错误: [oracle@bi-dw ~]$ expdp dp_user/dp_password@dw directory=expdp_d ...