鸟哥的linux备份策略.docx
《鸟哥的linux备份策略.docx》由会员分享,可在线阅读,更多相关《鸟哥的linux备份策略.docx(19页珍藏版)》请在冰豆网上搜索。
鸟哥的linux备份策略
鸟哥的备份策略
哪些Linux资料具有备份的意义
一般来说,鸟哥比较喜欢备份最重要的档案而已(关键资料备份),而不是整个系统都备份起来(完整备份,Fullbackup)!
那么哪些档案是有必要备份的呢?
具有备份意义的档案通常可以粗分为两大类,一类是系统基本设定资讯、一类则是类似网路服务的内容资料。
那么各有哪些档案需要备份的呢?
我们就来
稍微分析一下。
·作业系统本身需要备份的档案:
这方面的档案主要跟『帐号与系统设定档』有关系!
主要有哪些帐号的档案需要备份呢?
就是/
etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/home底下的使用者家目录等等,而由于Linux预设的重要参数档都在/etc/底下,所以只要将这个目录备份下来的话,那么几乎所有的设定档都可以被保存的!
至于/home目录是一般用户的家目录,自然也需要来备份一番!
再来,由于使用者会有邮件吧!
所以呢,这个/var/spool/mail/内容也需要备份!
另外,由于如果你曾经自行更动过核心,那么/boot里头的资讯也就很重要啰!
所以啰,这方面的资料你必须要备份的档案为:
·/etc/整个目录
·/home整个目录
·/var/spool/mail
·/boot
·/root
·如果你自行安装过其他的套件,那么/usr/local/或/opt也最好备份一下!
·网路服务的资料库方面:
这部份的资料可就多而且复杂了,首先是这些网路服务软件的设定档部分,如果你的网路软件安装都是以原厂提供的为主,那么你的设定档案大多是在/etc底下,所以这个就没啥大问题!
但若你的套件大多来自于自行的安装,那么/usr/local这个目录可就相当的重要了!
再来,每种服务提供的资料都不相同,这些资料很多都是人们提供的!
举例来说,你的WWW服务器总是需要有人提供网页档案吧?
否则浏览器来是要看啥咚咚?
你的讨论区总是得要写入资料库系统吧?
否则
讨论的资料如何更新与记载?
所以,使用者主动提供的档案,以及服务运作过程会产生的资料,都需要被考虑来备份。
若我们假设我们提供的服务软件都是使用原厂的RPM安装的!
所以要备份的资料档案有:
·软件本身的设定档案,例如:
/etc/整个目录,/usr/local/整个目录
·软件服务提供的资料,以WWW及MySQL为例:
WWW资料:
/var/www整个目录或/srv/www整个目录,及系统的使用者家目录
MySQL:
/var/lib/mysql整个目录
·其他在Linux主机上面提供的服务之资料库档案!
·推荐需要备份的目录:
由上面的介绍来看的话,如果你的硬件或者是由于经费的关系而无法全部的资料都予以备份时,鸟哥建议你至少需要备份这些目录!
·/boot
·/etc
·/home
·/root
·/usr/local(或者是/opt及/srv等)
·/var(注:
这个目录当中有些暂存目录则可以不备份!
)
·不需要备份的目录:
有些资料是不需要备份的啦!
例如我们在第六章档案权限与目录配置里头提到的/proc这个目录是在记录目前系统上面正在跑的程序,这个资料根本就不需要备份的呢!
此外,外挂的机器,例如/mnt或/media里面都是挂载了其他的硬盘装置、光盘机、软盘机等等,这些也不需要备份吧?
所以啰!
底下有些目录可以不需要备份啦!
·/dev:
这个随便你要不要备份
·/proc:
这个真的不需要备份啦!
·/mnt与/media:
如果你没有在这个目录内放置你自己系统的东西,也不需要备份
·/tmp:
干嘛存暂存档!
不需要备份!
备份用储存媒体的选择
用来储存备份资料的媒体非常的多样化,那该如何选择呢?
在选择之前我们先来讲个小故事先!
·一个实际发生的故事
在备份的时候,选择一个『资料存放的地方』也是很需要考虑的一个因素!
什么叫做资料存放的地方呢?
讲个最简单的例子好了,我们知道说,较为大型的机器都会使用tape这一种磁带机来备份资料,而如果是一般个人电脑的话,很可能是使用类似Mo这一种可读写式光盘片来存取资料!
但是你不要忘记了几个重要的因素,那就是万一你的Linux主机被偷了呢?
这不是不可能的,之前鸟哥在成大念书时,隔壁校区的研究室曾经遭小偷,里面所有的电脑都被偷走了!
包括『Mo片』,当他们发现的时候,一开始以为是硬件被偷走了,还好,他们都有习惯进行备份,但是很不幸的,这一次连『备份的MO都被拿走了!
』怎么办?
!
只能道德劝说小偷先生能够良心发现的将硬盘拿回来啰!
唉~真惨....
·异地备份系统
这个时候,所谓的『异地备份系统』就显的相当的重要了!
什么是异地备份呀!
说的太文言了!
呵!
简单的说,就是将你的系统资料『备份』到其他的地方去,例如说我的机器在台南,但是我还有另一部机器在高雄老家,这样的话,我可以将台南机器上面重要的资料都给他定期的自动的透过网路传输回去!
也可以将家里重要的资料给他丢到台南来!
这样的最大优点是可以在台南的机器死掉的时候,即使是遭小偷,也可以有一个『万一』的备份所在!
有没有缺点啊?
有啊!
缺点就是~频宽严重的不足!
在这种状态下,所能采取的策略大概就是『仅将最重要的资料给他传输回去啰!
』至于一些只要系统从新安装就可以回复的咚咚!
那就没有这个必要了!
当然啰,如果你的网路是属于T1专线的话,那么完整备份将资料丢到另一地去,也是很可行的啦!
只是鸟
哥没有那么好命...
·储存媒体的考量
在此同时,我们再来谈一谈,那么除了异地备份这个『相对较为安全的备份』方法之外,还有没有其他的方法可以储存备份的呢?
毕竟这种网路备份系统实在是太耗频宽了!
如果像我们一般家用的ADSL根本就是吃不消!
那么怎么办?
喔~那就只好使用近端的装置来备份啰!
这也是目前我们最常见到的备份方法!
例如一般我们使用的Tape,Mo,Zip,CD-RW,DVD-RW还有备份用抽取式硬盘与携带式硬盘等等!
那么在选择上需要注意些什么呢?
需要注意的地方有几点:
·备份速度要求--思考硬盘用途:
『备份』在Linux主机上面也是蛮耗系统资源的!
因为需要将系统的资料拷贝到其他装置上面去,
这个时候I/O与CPU的负载都会大!
你总不希望系统就这样给他挂点吧!
此外,有些系统的资料实在太多咯,怎么样也备份不完!
所以啰,越快的储存装置是越好的!
如果你是个重视速度甚于一切的人,那么我觉得抽取式硬盘是个不错的方式,只不过.....目前我知道的抽取式硬盘都需要冷开机才行,不太符合Linux主机24小时全年无休的状态....
但是硬盘真的越来越大、越来越便宜了,不使用速度快的硬盘来备份实在很可惜~加上目前的火线(IEEE1394)以及USB2.0外接式硬盘盒技术已经相当的成熟,传输速度又快,又可以直接热拔插(PlugandPlay),接上USB硬盘,整个复制一下,传输速度理论上可达480Mbps(约60MBytes/second),快的哩!
复制完毕,又可以将硬盘带走,不需要与主机放置在一起,还可以避免同时被偷,真是不错。
但是,硬盘还是有一定的困扰,那就是『不接电源的硬盘需要很好很好的保养』。
我们知道电脑最好的保养就是常常开机去运作一下,免得长期不开机,造成受潮而损坏。
这个携带式硬盘只是偶而才会连上主机来进行备份的资料,除非你额外购买一部防潮箱来放置硬盘,否则很容易损坏!
所以,近年来速度越来越快的DVD-RW就变的很方便啰!
至于磁带(tape),在速度上完全是落后的.....
至于使用直接安装在主机上的第二颗硬盘来备份,类似RAID或者是安装一颗备份的硬盘在Linux系统当中,这个方案也很好,而且速度上绝对是最具优势的!
但是就如同我们刚刚提到的,万一你的机器被偷了,连带的,这颗备份的硬盘自然也就不见了.....
·储存容量--磁带备份考量:
这也是一个需要考量的因素!
而且常常是最大考量的因素呢!
虽然目前硬盘越来越便宜,但是毕竟就如同前面说的,抽取式硬盘需要将系统冷开机,而建构在系统内的硬盘又同时具有不安全的成分在,携带式硬盘可能又有不容易保存的特性,这个时候一个大容量的替代方案就显的很重要了!
虽然CD-RW与DVD-RW可以提供不错的速度,但是其容量毕竟不足(虽然有高达几十GB的蓝光DVD可用,但目前(2009)尚未普及,光盘片太贵了!
)所以说,具有大容量的tape(磁带容量最小的一款也可以到达8GB左右!
)就相当的具有这方面的优势了!
而且携带方便,存放也容易!
更可以带着走~~
·经费与资料可靠性--DVD的使用,可保存10年左右:
在经费不短缺的情况下,我们当然会建议你上面的几个装置都买一买,然后分别在不同的时间进行不同的备份作业(底下我们有些建议的啦!
^_^)!
但是如果经费也是需要考量的话,那么磁带机这个目前还算贵重的物品可能暂时还动不到!
这个时候近来渐渐便宜的DVD-RW就显的活跃的多了!
而且光盘片也可以保存很久的。
当然,目前应该不会有人以软盘来备份了吧!
呵呵!
软盘可是相当不安全的。
无论如何,如果经费允许的话,Tape备份资料真的是一个不错的点子!
因为他的高容量让我好满意!
再来,如果经费稍微短缺的话,那么DVD-RW经常性的将资料烧录下来,这也是蛮好的,尤其DVD片又不占空间!
再来,如果还是没有办法,那么一颗内建在Linux的硬盘用来备份也是不错的!
什么!
连备份的硬盘都没有,唉!
怎么跟我一样~这个时候没办法啦,用原来的安装系统的硬盘,多留一个partition用来当作备份之用吧(这也是目前鸟哥常用的方法之一!
)底下我们来看一看一些常见的装置代号!
·光盘机:
/dev/cdrom(其实应该是/dev/sdX或/dev/hdX)
·磁带机:
/dev/st0(SCSI介面),/dev/ht0(IDE介面)
·软盘机:
/dev/fd0,/dev/fd1
·硬盘机:
/dev/hd[a-d][1-16](IDE),/dev/sd[a-p][1-16](SCSI/SATA)
·外接式USB硬盘机:
/dev/sd[a-p][1-16](与SCSI相同)
·印表机:
/dev/lp[0-2]
特别留意的是磁带机!
如果你有钱的话,那么买一部磁带机是相当不错的建议!
没钱的话,买IDE或
SATA介面的硬盘也很不错!
!
^_^
备份的种类、频率与工具的选择
讲了好多口水了,还是没有讲到重点,真是的....好了,再来提到那个备份的种类,因为想要选择什么储存媒体与相关备份工具,都与备份使用的方式有关!
那么备份有哪些方式呢?
一般可以粗略分为『累积备份』与『差异备份』这两种(注1)。
当然啦,如果你在系统出错时想要重新安装到更新的系统时,仅备
份关键资料也就可以了!
完整备份之累积备份(Incrementalbackup)
备份不就是将重要资料复制出来即可吗?
干嘛需要完整备份(Fullbackup)呢?
如果你的主机是负责相当重要的服务,因此如果有不明原因的当机事件造成系统损毁时,你希望在最短的时间内复原系统。
此时,如果仅备份关键资料时,那么你得要在系统出错后,再去找新的Linuxdistribution来安装,安装完毕后还得要考虑到资料新旧版本的差异问题,还得要进行资料的移植与系统服务的重新建立等等,等到建立妥当后,还得要进行相关测试!
这种种的工作可至少得要花上一个星期以上的工作天才能够处理妥当!
所以,仅有关键资料是不够的!
·还原的考量
但反过来讲,如果是完整备份的话呢?
若硬件出问题导致系统损毁时,只要将完整备份拿出来,整个给他倾倒回去硬盘,所有事情就搞定了!
有些时候(例如使用dd指令)甚至连系统都不需要重新安装!
反正整个系统都给他倒回去,连同重要的Linux系统档案等,所以当然也就不需要重新安装啊!
因此,很
多企业用来提供重要服务的主机都会使用完整备份,若所提供的服务真的非常重要时,甚至会再架设一部一模一样的机器呢!
如此一来,若是原本的机器出问题,那就立刻将备份的机器拿出来接管!
以使企业的网路服务不会中断哩!
那你知道完整备份的定义了吧?
没错!
完整备份就是将根目录(/)整个系统通通备份下来的意思!
不过,在某些场合底下,完整备份也可以是备份一个档案系统(filesystem)!
例如/dev/sda1或/dev/md0或/dev/myvg/mylv之类的档案系统就是了。
·累积备份的原则
虽然完整备份在还原方面有相当良好的表现,但是我们都知道系统用的越久,资料量就会越大!
如此一来,完整备份所需要花费的时间与储存媒体的使用就会相当麻烦~所以,完整备份并不会也不太可能每天都进行的!
那你想要每天都备份资料该如何进行呢?
有两种方式啦,一种是本小节会谈到的累积备份,一种则是下个小节谈到的差异备份。
所谓的累积备份,指的是在系统在进行完第一次完整备份后,经过一段时间的运作,比较系统与备份档之间的差异,仅备份有差异的档案而已。
而第二次累积备份则与第一次累积备份的资料比较,也是仅备份有差异的资料而已。
如此一来,由于仅备份有差异的资料,因此备份的资料量小且快速!
备份也很有效率。
我们可以从下图来说明:
图2.1.1、累积备份(incrementalbackup)操作示意图
假如我在星期一作好完整备份,则星期二的累积备份是系统与完整备份间的差异资料;星期三的备份是系统与星期二的差异资料,星期四的备份则是系统与星期三的差异资料。
那你得要注意的是,星期二的资料是完整备份加第一次累积备份,星期三的资料是完整备份加第一次累积与第二次累积备份,星期四的
资料则是星期一的完整备份加第一次加第二次加第三次累积备份。
由于每次都仅与前一次的备份资料比较而已,因此备份的资料量就会少很多!
那如何还原?
经过上面的分析,我们也会知道累积备份的还原方面比较麻烦!
假设你的系统在星期五的时候挂点了!
那你要如何还原?
首先,你必须要还原星期一的完整备份,然后还原星期二的累积备份,再依序还原星期三、星期四的累积备份才算完全复原!
那如果你是经过了九次的累积备份,就得要还原到第九次的阶段,才是最完整的还原程序!
·累积备份使用的备份软件
完整备份常用的工具有dd,cpio,dump/restore等等。
因为这些工具都能够备份装置与特殊档案!
dd
可以直接读取磁盘的磁区(sector)而不理会档案系统,是相当良好的备份工具!
不过缺点就是慢很多!
cpio是能够备份所有档名,不过,得要配合find或其他找档名的指令才能够处理妥当。
以上两个都能够进行完整备份,但累积备份就得要额外使用脚本程序来处理。
可以直接进行累积备份的就是dump这个指令啰!
详细的指令与参数用法,请前往第九章查阅,这里仅列出几个简单的范例而已。
#1.用dd来将/dev/sda备份到完全一模一样的/dev/sdb硬盘上:
[root@www~]#ddif/dev/sdaof/dev/sdb#由于dd是读取磁区,所以/dev/sdb这颗磁盘可以不必格式化!
非常的方便!
#只是你会等非常非常久!
因为dd的速度比较慢!
#2.使用cpio来备份与还原整个系统,假设储存
媒体为SATA磁带机:
[root@www~]#find/-print|cpio-covB>/dev/st0<备份到磁带机
[root@www~]#cpio-iduv
假设/home为一个独立的档案系统,而/backupdata也是一个独立的用来备份的档案系统,那如何使用
dump将/home完整的备份到/backupdata上呢?
可以像底下这样进行看看:
#1.完整备份[root@www~]#dump-0u-f/backupdata/home.dump/home#2.第一次进行累积备份
[root@www~]#dump-1u-f/backupdata/home.dump.1/home
除了这些指令之外,其实tar也可以用来进行完整备份啦!
举例来说,/backupdata是个独立的档案系统,你想要将整个系统通通备份起来时,可以这样考虑:
将不必要的/proc,/mnt,/tmp等目录不备份,
其他的资料则予以备份:
[root@www~]#tar--exclude/proc--exclude/mnt--exclude/tmp\>--exclude/backupdata
-jcvp-f/backupdata/system.tar.bz2/
完整备份之差异备份(Differentialbackup)
差异备份与累积备份有点类似,也是需要进行第一次的完整备份后才能够进行。
只是差异备份指的是:
每
次的备份都是与原始的完整备份比较的结果。
所以系统运作的越久,离完整备份时间越长,那么该次的
差异备份资料可能就会越大!
差异备份的示意图如下所示:
图2.2.1、差异备份(differentialbackup)操作示意图
差异备份常用的工具与累积备份差不多!
因为都需要完整备份嘛!
如果使用dump来备份的话,那么每次
备份的等级(level)就都会是level1的意思啦!
当然啦,你也可以透过tar的-N选项来备份喔!
如下所示:
[root@www~]#tar-N'2009-06-01'-jpcv-f/backupdata/home.tar.bz2/home#只有在比
2009-06-01还要新的档案,在/home底下的档案才会被打包进home.bz2中!
#有点奇怪的是,目录还是会被记录下来,只是目录内的旧档案就不会备份。
此外,你也可以透过rsync来进行镜像备份喔!
这个rsync可以对两个目录进行镜像(mirror),算
是一个非常快速的备份工具!
简单的指令语法为:
[root@www~]#rsync-av来源目录目标目录#1.将/home/镜像到/backupdata/home/去
[root@www~]#rsync-av/home/backupdata/#此时会在/backupdata底下产生home这个目录来!
[root@www~]#rsync-av/home/backupdata/#再次进行会快很多!
如果资料没有更动,几乎不会进行
任何动作!
根据分析(注2),差异备份所使用的磁盘容量可能会比累积备份来的大,但是差异备份的还原较快,因为只需要还原完整备份与最近一次的差异备份即可。
无论如何,请依据你自己的喜好来选择备份的方式吧!
关键资料备份
完整备份虽然有许多好处,但就是需要花费很多时间!
所以,如果在主机提供的服务并不是一定要24小时提供的前提下,我们可以仅备份重要的关键资料即可。
由于主机即使当机个一两天可能也不会影响到你的正常生活时,仅备份关键资料就好啦!
不需要整个系统都备份。
仅备份关键资料是有许多好处的!
由
于完整备份可能是在系统运作期间进行,不但会花费非常多时间,而且如果备份当时系统已经被攻破,那你备份的资料是有问题的,那还原回去也是有问题的系统啊!
如果仅是备份关键资料而已,那么由于系统的绝大部分执行档都可以后来重新安装,因此若你的系统不是因为硬件问题,而是因为软件问题而导致系统被攻破或损毁时,直接捉取最新的Linuxdistribution,然后重新安装,然后再将系统资料(如帐号/密码与家目录等等)与服务资料(如www/email/crontab/ftp等等)一个一个的填回去!
那你的系统不但保持在最新的状态,同时也可以趁机处理一下与重新温习一下系统设定!
是很不错的!
不过,备份关键资料最麻烦的地方其实就是在还原啦!
上述的还原方式是你必须要很熟悉系统运作,否则还原得要花费很多时间的!
尤其近来的Linux强调安全性,所以加入SELinux了,你如果要从旧版的Linux升级到新版时,原本若没有SELinux而换成新版则需要启动SELinux时,那个除错的时间会花
很长一段日子哩!
鸟哥认为这是仅备份关键资料的一些优缺点啦~
备份关键资料鸟哥最爱使用tar来处理了!
如果想要分门别类的将各种不同的服务在不同的时间备份使用不同档名,配合date指令是非常好用的工具!
例如底下的案例是依据日期来备份mysql的资料库喔!
[root@www~]#tar-jpcvfmysql.`date+%Y-%m-%d`.tar.bz2/var/lib/mysql
备份是非常重要的工作,你可不希望想到才进行吧?
交给系统自动处理就对啦!
请自己撰写script,配合crontab去执行吧!
这样子,备份会很轻松喔!
鸟哥的备份策略
每部主机的任务都不相同,重要的资料也不相同,重要性也不一样,因此,每个人的备份思考角度都不一样!
有些备份策略是非常有趣的,包括使用多个磁带机与磁带来自动备份企业资料哩(注3)。
就鸟哥的想法来说,鸟哥并没有想要将整个系统完整的备份下来,因为太耗时间了!
而且就鸟哥的立场而言,似乎也没有这个必要,所以通常鸟哥只备份较为重要的档案而已!
不过,由于鸟哥需要备份/home与网页资料,如果天天都备份,我想,系统迟早会受不了(因为这两个部分就已经占去数10GB的硬盘空
间...),所以鸟哥就将我的备份分为两大部分,一个是每日备份经常性变动的重要资料,一个则是每周备份就不常变动的资讯。
这个时候我就写了两个简单的scripts,分别来储存这些资料。
所以针对鸟哥的『鸟站』来说,我的备份策略是这样的:
1.主机硬件:
使用一个独立的filesystem来储存备份资料,此filesystem挂载到/backup当中;
2.每日进行:
目前仅备份MySQL资料库;
3.每周进行:
包括/home,/var,/etc,/boot,/usr/local等目录与特殊服务的目录;
4.自动处理:
这方面利用/etc/crontab来自动提供备份的进行;
5.异地备份:
每月定期的将资料分别(a)烧录到光盘上面(b)使用网路传输到另一部机器上面。
那就来看看鸟哥是怎么备份的吧!
^_^
每周系统备份的script
底下提供鸟哥的备份的scripts,希望对大家有点帮助!
鸟哥假设你已经知道如何挂载一个新的
filesystem到/backup去,所以格式化与挂载这里就不再强调啰。
[root@www~]#vi/backup/backupwk.sh
#!
/bin/bash
#
#使用者参数输入位置:
#basedir你用来储存此脚本所预计备份的资料之目录(请独立档案系统)
basedir/backup/weekly<您只要改这里就好了!
#
#底下请不要修改了!
用预设值即可!
PATH/bin:
/usr/bin:
/sbin:
/usr/sbin;exportPATH
exportLANGC
#设定要备份的服务的设定档,以及备份的目录
named$basedir/named
postfixd$basedir/postfix
vsftpd$basedir/vsftp
sshd$basedir/ssh
sam