Linux学习-备份的种类、频率与工具的选择
完整备份之累积备份 (Incremental backup)
- 还原的考虑
如果是完整备份的话。若硬件出问题导致系统损毁时,只要将完整备份拿出来,整个给他倾倒回去硬盘, 所有事情就搞定了!有些时候 (例如使用 dd 指令) 甚至连系统都不需要重新 安装!反正整个系统都给他倒回去,连同重要的 Linux 系统文件等,所以当然也就不需要重新安装。
那你知道完整备份的定义了吧?没错!完整备份就是将根目录 (/) 整个系统通通备份下来的意思!不 过,在某些场合底下,完整备份也可以是备份一个文件系统 (filesystem)!
- 累积备份的原则
虽然完整备份在还原方面有相当良好的表现,但是我们都知道系统用的越久,数据量就会越大!如此 一来, 完整备份所需要花费的时间与储存媒体的使用就会相当麻烦~所以,完整备份并不会也不太可能每天都进行的!那你想要每天都备份数据该如何进行呢?有两种方式啦,一种是本小节会谈到的累积备份,一种则是下个小节谈到的差异备份。
所谓的累积备份,指的是在系统在进行完第一次完整备份后,经过一段时间的运作, 比较系统与备 份文件之间的差异,仅备份有差异的文件而已。而第二次累积备份则与第一次累积备份的数据比较, 也是仅备份有差异的数据而已。如此一来,由于仅备份有差异的数据,因此备份的数据量小且快速! 备份也很有效率。 我们可以从下图来说明:
假如我在星期一作好完整备份,则星期二的累积备份是系统与完整备份间的差异数据;星期三的备份 是系统与星期二的差异数据, 星期四的备份则是系统与星期三的差异数据。你得要注意的是,星 期二的数据是完整备份加第一次累积备份, 星期三的数据是完整备份加第一次累积与第二次累积备 份,星期四的数据则是星期一的完整备份加第一次加第二次加第三次累积备份。 由于每次都仅与前 一次的备份数据比较而已,因此备份的数据量就会少很多!
那如何还原?经过上面的分析,我们也会知道累积备份的还原方面比较麻烦! 假设你的系统在星期 五的时候挂点了!那你要如何还原?首先,你必须要还原星期一的完整备份,然后还原星期二的累积 备份, 再依序还原星期三、星期四的累积备份才算完全复原!那如果你是经过了九次的累积备份, 就得要还原到第九次的阶段, 才是最完整的还原程序!
- 累积备份使用的备份软件
完整备份常用的工具有 dd, cpio, xfsdump/xfsrestore 等等。因为这些工具都能够备份装置与特殊文件! dd 可以直接读取磁盘的扇区 (sector) 而不理会文件系统,是相当良好的备份工具!不过缺点就是慢 很多! cpio 是能够备份所有档名,不过,得要配合 find 或其他找文件名的指令才能够处理妥当。 以上两个都能够进行完整备份, 但累积备份就得要额外使用脚本程序来处理。可以直接进行累积备 份的就是 xfsdump 这个指令啰!
# 1. 用 dd 来将 /dev/sda 备份到完全一模一样的 /dev/sdb 硬盘上:
[root@study ~]# dd if=/dev/sda of=/dev/sdb
# 由于 dd 是读取扇区,所以 /dev/sdb 这颗磁盘可以不必格式化!非常的方便!
# 只是你会等非常非常久!因为 dd 的速度比较慢!
# 2. 使用 cpio 来备份与还原整个系统,假设储存媒体为 SATA 磁带机:
[root@study ~]# find / -print | cpio -covB > /dev/st0 <==备份到磁带机
[root@study ~]# cpio -iduv < /dev/st0 <==还原
假设 /home 为一个独立的文件系统,而 /backupdata 也是一个独立的用来备份的文件系统,那如何 使用 dump 将 /home 完整的备份到 /backupdata 上呢?可以像底下这样进行看看:
# 1. 完整备份
[root@study ~]# xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home
# 2. 第一次进行累积备份
[root@study ~]# xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home
除了这些指令之外,其实 tar 也可以用来进行完整备份啦!举例来说,/backupdata 是个独立的文件 系统, 你想要将整个系统通通备份起来时,可以这样考虑:将不必要的 /proc, /mnt, /tmp 等目录不 备份,其他的数据则予以备份:
[root@study ~]# tar --exclude /proc --exclude /mnt --exclude /tmp \
> --exclude /backupdata -jcvp -f /backupdata/system.tar.bz2 /
完整备份之差异备份 (Differential backup)
差异备份与累积备份有点类似,也是需要进行第一次的完整备份后才能够进行。只是差异备份指的是: 每次的备份都是与原始的完整备份比较的结果。所以系统运作的越久,离完整备份时间越长, 那么 该次的差异备份数据可能就会越大!差异备份的示意图如下所示:
差异备份常用的工具与累积备份差不多!因为都需要完整备份嘛!如果使用 xfsdump 来备份的话, 那么每次备份的等级 (level) 就都会是 level 1 的意思啦!当然啦,你也可以透过 tar 的 -N 选项来 备份喔!如下所示:
[root@study ~]# tar -N '2015-09-01' -jpcv -f /backupdata/home.tar.bz2 /home
# 只有在比 2015-09-01 还要新的文件,在 /home 底下的文件才会被打包进 home.bz2 中!
# 有点奇怪的是,目录还是会被记录下来,只是目录内的旧文件就不会备份。
此外,你也可以透过 rsync 来进行镜像备份喔! 这个 rsync 可以对两个目录进行镜像 (mirror) ,算 是一个非常快速的备份工具!简单的指令语法为:
[root@study ~]# rsync -av 来源目录 目标目录
# 1. 将 /home/ 镜像到 /backupdata/home/ 去
[root@study ~]# rsync -av /home /backupdata/
# 此时会在 /backupdata 底下产生 home 这个目录来!
[root@study ~]# rsync -av /home /backupdata/
# 再次进行会快很多!如果数据没有更动,几乎不会进行任何动作!
关键数据备份
完整备份虽然有许多好处,但就是需要花费很多时间!所以,如果在主机提供的服务并不是一定要 24 小时提供的前提下, 我们可以仅备份重要的关键数据即可。由于主机即使当机个一两天可能也不会 影响到你的正常生活时, 仅备份关键数据就好啦!不需要整个系统都备份。仅备份关键资料是有许多好处的! 由于完整备份可能是在系统运作期间进行,不但会花费非常多时间,而且如果备份当时
系统已经被攻破, 那你备份的数据是有问题的,那还原回去也是有问题的系统啊!
如果仅是备份关键数据而已,那么由于系统的绝大部分执行档都可以后来重新安装,因此若你的系统 不是因为硬件问题, 而是因为软件问题而导致系统被攻破或损毁时,直接捉取最新的 Linux distribution ,然后重新安装, 然后再将系统数据 (如账号/密码与家目录等等) 与服务数据 (如 www/email/crontab/ftp 等等) 一个一个的填回去!
不过,备份关键数据最麻烦的地方其实就是在还原啦!上述的还原方式是你必须要很熟悉系统运作, 否则还原得要花费很多时间的!尤其近来的 Linux 强调安全性,所以加入 SELinux 了,你如果要从 旧版的 Linux 升级到新版时, 原本若没有 SELinux 而换成新版则需要启动 SELinux 时,那个除错 的时间会花很长一段日子哩! 这是仅备份关键数据的一些优缺点。
备份关键数据使用 tar 来处理了!如果想要分门别类的将各种不同的服务在不同的时间备份 使用不同档名, 配合 date 指令是非常好用的工具!例如底下的案例是依据日期来备份 mariadb 的 数据库喔!
[root@study ~]# tar -jpcvf mysql.`date +%Y-%m-%d`.tar.bz2 /var/lib/mysql
备份是非常重要的工作,你可不希望想到才进行吧?交给系统自动处理就对啦!请自己撰写 script , 配合 crontab 去执行吧!这样子,备份会很轻松。
Linux学习-备份的种类、频率与工具的选择的更多相关文章
- Linux学习-备份要点
备份资料的考虑 老实说,备份是系统损毁时等待救援的救星!因为你需要重新安装系统时, 备份的好坏会影响到你 系统复原的进度!事实上,系统有可能由于不预期的伤害而导致系统发生错误! 什么是不预期的伤害呢? ...
- Linux学习-备份策略
每部主机的任务都不相同,重要的数据也不相同,重要性也不一样,因此,每个人的备份思考角度都不一样! 备份分为两大部分,一个是每日备份经常性变动的重要数据, 一个则是每周备份就不常变动的信息.这个时候我就 ...
- linux学习(3)——vim文本编辑工具
(三) vi与vim的最大区别就是编辑一个文本vi不显示颜色,vim显示颜色. 安装: yum install -y vim-enhance Vim有三种模式 A:一般模式 上下左右光标 k j h ...
- Linux学习-核心编译的前处理与核心功能选择
硬件环境检视与核心功能要求 根据自己的需求来确定编译的选项 保持干净原始码: make mrproper 我们还得要处理一下核心原始码底下的残留文件才行!假设我们是第一次 编译, 但是我们不清楚到底下 ...
- linux学习书籍推荐《鸟哥的Linux私房菜》下载
下载地址:点我 <鸟哥的Linux私房菜:基础学习篇>是具有知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>的最新版,全面而详细地介绍了Linux操作系统.< ...
- Linux系统备份还原工具1(DD)(应用实例)
DD使用教程:http://www.cnblogs.com/EasonJim/p/7442223.html 以下实例没经过大量测试,可能在一些机器上不会有效. 一般围绕以下几点进行设置: 1.dd完后 ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- Linux学习历程(持续更新整理中)
1.文件目录操作命令 (1) ls 显示文件和目录列表 a ls -l 显示文件的详细信息 b ls -a 列出当前目录的所有文件,包含隐藏文件. c stat '目录/文件' 显示指定目录 ...
- Linux dd——备份命令
Linux学习笔记之备份命令dd 功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换.可以用该命令实现DOS下的diskcopy命令的作用.先用dd命令把软盘上的数据写成硬 ...
随机推荐
- Kaggle八门神器(一):竞赛神器之XGBoost介绍
Xgboost为一个十分有效的机器学习模型,在各种竞赛中均可以看到它的身影,同时Xgboost在工业届也有着广泛的应用,本文以Titanic数据集为研究对象,简单地探究Xgboost模型建模过程,同时 ...
- 搭建本地SVN資料
基于網上眾多教程,搭建SVN成功:VisualSVN Server + TortoiseSVN Client. 過程比較簡單,就不重複書寫了. 部份參考資料,感謝作者: 什麽是SVN及如何應用 htt ...
- Docker的下载安装以及简单使用
Docker的简介 Docker是一个基于GO语言开发的应用容器,它是一款适合运维人员和后段开发人员学习的开源容器引擎.Docker容器可以让开发的应用或者依赖包存储其中,可以运行在任何的Linux ...
- 文件系统结构-《循序渐进linux》
1.目录结构 很多linux的发行版都遵循FSSTND标准,这一标准仅包含系统最基本的文件. /dev 设备文件 /bin 可执行的二进制文件 /opt /root 超级用户的主目录 /home 每个 ...
- Android 使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突
如果你还在为处理滑动冲突而发愁,那么你需要静下心来看看这边文章,如果你能彻底理解这篇文章中使用的技术,那么,一切滑动冲突的问题解决起来就轻而易举了: 先扔一个最终实现的效果图 先分析下效果图中实现的功 ...
- IDEA创建maven项目的web.xml头
使用IDEA创建maven项目骨架是webapp时,软件自动创建的web.xml文件是2.3版本的,不能使用el表达式,所以可以手动换成4.0的文件头. <?xml version=" ...
- gd调试命令,gdb调试core文件
使用 gcc -g test.c -o test.out 编译程序,只有加-g参数才支持gdb调试: 然后 gdb ./test.out 运行可执行文件,进入gdb调试模式(gdb),在括号后面的输入 ...
- C#中静态成员和实例变量
昨天晚上看静态成员和实例变量的时候,看到这样的一句话:默认情况下,若成员被定义为实例变量,这就意味着类需要为每个实例都建立一个副本,而在定义一个静态变量的时候,只存在此成员的一个副本. 呵呵,今天跟前 ...
- mongodb安全整理
本文大都网上参考的,我只是整理了一下 一默认配置情况 1.MongoDB安装时不添加任何参数,默认是没有权限验证的,任何用户都可以登录进来,而且登录的用户可以对数据库任意操作而且可以远程访问数据库,需 ...
- COGS 147. [USACO Jan08] 架设电话线
★★☆ 输入文件:phoneline.in 输出文件:phoneline.out 简单对比时间限制:1 s 内存限制:16 MB Farmer John打算将电话线引到自己的农场,但电 ...