鸟哥的 Linux ADSL 私房菜


浅谈备份策略
最近更新日期:2003/02/12
谁需要备份数据
哪些 Linux 数据具有备份的意义
选择的备份装置
备份的种类完整备份(full backup), 部分备份(Implement backup),
备份的工具选择
VBird 的备份策略与 scripts系统备份, 每日备份, 远程备份,
本章习题练习

谁需要备份数据
前面我们提到了相当多的 Linux 系统基础,这个时候我们再来谈一谈:『若您的系统由于不预期的伤害,导致系统发生错误,该如何修复?』这可是个相当大的问题呀!怎么说呢?又什么叫做『不预期的伤害?』好了,假如您的 Linux 系统上面某些Internet的服务套件是最新的!也意味着可能是『相对最安全的』,但是,这个世界目前是闲人相当的多的,你不知道什么时候会有所谓的『黑客软件』被提供出来,万一你在 Internet 上面的服务套件被入侵,导致你的 Linux 系统全毁,这个时候怎么办?!『重新安装就好啦!』 或许您会这么说,但是,像鸟哥管理的几个网站的数据,尤其是 MySQL 数据库的数据,这些都是弥足珍贵的经验资料,万一被损毁而就不回来的时候,不是很可惜吗?这个还好哩,万一您是某家银行的话,呵呵!那么数据的损毁可就不 是能够等闲视之的!!关系的可是数千甚至上万人的身家财产!!这就是备份的重要性了!他可以最起码的稍微保障我们的数据有另外一份 copy 的备援以达到『安全回复』的基本要求!
 
如果是针对个人数据的话,那么在一般桌上型计算机中,最好用的备份软件就是『Ghost』这一个远近驰名的备份大师了!他可以很轻快的就将我们的整个 partition 搞定的非常的完美!在还原方面也是非常的快速且操作简便!由于个人桌上型计算机所使用的数据量通常不大,所以当 ghost 完成之后,通常只要将数据烧录到光盘片当中,大约只要一至两片的光盘片也就绰绰有余啰!那么将光盘片保存好,这就是最简易的数据备份模式啰!此外,由于个人的数据变动性不大,所以数据的备份频率方面也不需要非常的频繁!
 
但是,万一您提供的是『Internet』上面服务的主机信息呢?!怎么办?举个例子来说,像是我们 TnLUG 同好领导者之一的『阿基』兄,他提供的 Internet 服务是 BBS ,您晓得吗? BBS 的数据量虽然不大,但是由于他的文件是天天在增加的,每天都有相当多的信息流入,由于某些信息都是属于重要的人物之留言,这个时候,我们能够让机器死掉吗?再提到最近VBird的讨论区曾经挂点的问题,以及数周前 Study-Area 讨论区挂点的问题,讨论区一旦挂点的话,该数据库内容如果损毁到无法救回来,嘿嘿!要晓得讨论区可不是一个人的心血耶!有的时候(像 Study-Area 讨论区)是一群热心 Linux 的朋友们互相建立交流起来的数据流通网,如果死掉了,那么不是让这些热血青年的热情付之一炬了吗?!所以啰,建立备份的策略是相当的重要的。
 
基本上,『计算机是一个相当不可靠的机器』这句话在大部分的时间内还是 成立的!常常会听到说『要计算机正常的工作,最重要的是要去拜拜!』嘿嘿!不要笑!这还是真的哩!尤其是在日前一些计算机周边硬件的生产良率 ( 就是将硬件产生出来之后,经过测试,发现可正常工作的与不能正常工作的硬件总数之比值 ) 越来越差的情况之下,计算机的不稳定状态实在是越来越严重了!举个例子来说,我曾经同时买过同一厂牌的 IxM 30GB 硬盘三颗,回来之后经过一个星期,嘿嘿!挂掉了两颗!其中一棵是有坏轨,另外一棵是『完全死掉』,拿去公司要求修理,结果呢?嗯!店家直接拿了一棵新的给 我,害我吓一跳,店家的工程师说『唉呀!目前这个牌子的良率太差了,所以代理商为了怕麻烦,都会直接拿新的替换给我们啦!』要晓得的是,当初那一棵完全死 掉的硬盘,是我用来备份我的主机数据的....好在当时我将备份的资料放在三四的地方,还好....
 
所以啰!由于计算机 ( 尤其是目前的计算机,操作频率太高、硬件良率太差、使用者操作习惯不良、『某些』操作系统的当机率太高.... ) 的稳定性较差,所以啰!备份的工作就越来越重要了!
 
那么 Linux 在备份时考虑的因素有哪些呢?
 
  1. 备份哪些档案:

  2. 例如在账号管理那一篇当中,我们知道最起码主机的账号信息在/etc/*及/home/*等等档案都是重要的!
     
  3. 选择什么备份的媒介:

  4. 是可擦写光盘、另一棵硬盘、同一颗硬盘的不同 partition、还是使用网络备援系统?哪一种的速度最快,最便宜,可将数据保存最久?
     
  5. 考虑备份的方式:

  6. 是完全备份(类似 ghost)还是部分备份即可?
     
  7. 备份的频率:

  8. 例如 MySQL 数据库是否天天备份、若完全备份,需要多久进行一次?
     
  9. 备份使用的工具为何:

  10. 是 tar 还是 cpio 等等?
底下我们就来谈一谈这些问题的解决之道吧! ^_^

哪些 Linux 数据具有备份的意义
具有备份意义的档案通常可以粗分为两大类,一类是系统一类则是类似网络服务的数据库,那么各有哪些档案需要备份的呢?我们就来稍微分析一下。

选择的备份装置
在备份的时候,选择一个『数据存放的地方』也是很需要考虑的一个因素!什么叫做数据存放的地方呢?讲个最简单的例子好了,我们知道说,较为大型的机器都会使用 tap 这一种磁带机来备份数据,而如果是一般个人计算机的话,很可能是使用类似 Mo 这一种可擦写式光盘片来存取数据!但是您不要忘记了几个重要的因素,那就是万一您的 Linux 主机被偷了呢?这不是不可能的,我们隔壁校区的研究室曾经遭小偷,里面所有的计算机都被偷走了!包括『 Mo 片』,当他们发现的时候,一开始以为是硬件被偷走了,还好,他们都有习惯进行备份,但是很不幸的,这一次连『备份的 MO 都被拿走了!』怎么办?!只能道德劝说小偷先生能够良心发现的将硬盘拿回来啰!唉~真惨....
这个时候,所谓的『远程备援系统』就显的相当的重要了!什么是远程备援呀!说的太文言了!呵!简单的说,就是将你的系统数据『备份』到其它的地方去,例如说我的机器在台南,但是我还有另一部机器在高雄老家,这样的话,我可以将台南机器上面重要的数据都给他定期的自动的 ftp 回去!也可以将家里重要的数据给他丢到台南来!这样的最大优点是可以在台南的机器死掉的时候,即使是遭小偷,也可以有一个『万一』的备份所在!但是缺点是~~频宽严重的不足!在这种状态下,所能采取的策略大概就是『仅将最重要的数据给他 ftp 回去啰!』至于一些只要系统从新安装就可以回复的咚咚!那就没有这个必要了!当然啰,如果你的网络是属于 T1 专线的话,那么完整备份将数据丢到另一地去,呵呵!也是很可行的啦!只是我没有那么好命....唉~穷学生一个~
在此同时,我们再来谈一谈,那么除了这个『相对较为安全的备份』方法之外,毕竟这种网络备援系统实在是太耗频宽了!如果像我们一般家用的 ADSL 根本就是吃不消!那么怎么办!还有其它的方法吗?喔~那就只好使用近端的装置来备份啰!这也是目前我们最常见到的备份方法!例如一般我们使用的 Tap, Mo, Zip, CD-RW, 还有备份用抽取式硬盘等等!那么在选择上需要注意些什么呢?需要注意的地方有几点: 无论如何,如果经费够的话, Tap 备份数据真的是一个不错的点子!因为他的高容量让我好满意!再来,如果经费稍微短缺的话,那么 CD-RW 经常性的将数据烧录下来,这也是蛮好的,尤其 CD 片又不占空间!再来,如果还是没有办法,那么一颗内建在 Linux 的硬盘用来备份也是不错的!什么!!连备份的硬盘都没有,唉!怎么跟我一样~这个时候没办法啦,用原来的安装系统的硬盘,多留一个 partition 用来当作备份之用吧(这也是目前我常用的方法之一!)
一些装置的档案代号

备份的种类
如同上面提到的,这两个方式各有优缺点啦!那么如果可能的话,是否两个都来进行一下最好呢?呵呵!答对了!给你拍拍手!我们通常 的规划就是这样,重点部分的备份频率较高,可能每天都需要备份的!至于如果是完整备份的话,那么一个星期、甚至一个月在备份一次都可以!目前我的系统上面 就是每天备份 MySQL 数据库,然后每个星期备份所有的重要数据!

备份的工具选择
好了,选定了备份的装置与备份的频率之后,那么我要使用什么方式来备份呀!呵呵!这个也要跟备份的种类相互配合呢!通常我在备份的时候,除非有磁带机或者有特殊的功用,否则通常我只使用 tar 啦!但是这里我们介绍一下 cpio 这个东西!如果你有磁带机的话, cpio 可是相当好用的一个指令呢! ^_^  ,呵呵!由于这两个指令我们早在『压缩工具』当中稍微提过了,请再自行过去瞧一瞧去啰!另外,您或许会问道:『那么我为什么不直接给他 copy 过去备份的地点就好了呢!?』呵呵!既然可以在 copy 的过程里面增加压缩的功能来减低整个储存空间的消耗,为何不压缩?!那当然还是压缩一下比较好啰!所以啊!我还是比较喜欢 tar, cpio 的啦!
完整备份的工具
在完整备份的工具里面,三个工具 tar, cpio 与 dump 都很常被使用!但是我没有使用过 dump ,所以这里就不谈他!至于 cpio 的话,他最大的好处就是『 cpio 连一般的装置文件都可以 copy 过来!』很棒吧!所以使用 cpio 进行完整备份是很棒的一个选择。不过需要注意的是,由于 cpio 需要配合 find 才可以正常的动作!这里请特别留意啰!另外,使用 cpio 常常配合另一颗完全用来备份的硬盘或者是磁带机才好!至于完整的指令用法请到 『压缩工具』 那一篇去查看啰!备份与反备份分别可以这样使用:
 
1. 使用 cpio 来备份与反备份
[root @test /root]# find / -print | cpio -covB > /dev/st0 <==备份至 tap 
[root @test /root]# cpio -iduv < /dev/st0         <==由 tap 将数据存回系统中!

2. 使用 tar 来备份
[root @test /root]# tar -zcvfP host.tar.gz / --exclude /proc --exclude /mnt --exclude /tmp
[root @test /root]# tar -zxvf  host.tar.gz

这两个工具都蛮好用的!尤其我特喜欢 tar 的用途!因为他相当的适合于另一颗硬盘的备份呢!

部分备份的基础工具
至于部分备份方面,我们就以简单的 tar 来说明一下吧!!假如我们需要备份的数据是每天的 MySQL 数据库时,由于我想让每天的数据都存成不同的档案,而要分别档案的新旧又以日期来分别最简单了!所以我就可以这样做:
 
[root @test /root]# tar -zcvf mysql.`date +%Y-%m-%d`.tar.gz /var/lib/mysql
如果忘记了上面的指令代表什么意思,那么请回到 bash 那一章去瞧一瞧吧!

[root @test /root]# tar -N '2002/07/05' -zcvf home.tar.gz /home
只有在比 2002/07/05 还要新的档案,在 /home 底下的档案才会被打包进 home.tar.gz 中!

这样就能将 mysql 的数据库压缩备份至 mysql.2002-07-06.tar.gz 这个档案,并且日期会每天都不一样!呵呵!这样一来如果系统的数据库出了问题,就可以马上的回复了!而且还有很多的档案可供回复呢!不错吧!此外,也可以 利用类似上面的第二个范例的例子,将最新的资料备份就好,其它的资料则不予以更动!嘿嘿!提供了更完善的方式呢!

大致的工具就是这样了!此外,由于备份是长长久久的事业,所以我们需要的是『系统可以自己动作』的方式,您说是吧!所以呢,这个时候就需要使用到 cron 的服务啦!还记得我们先前讲过的 例行性命令的建立 吗?赶快在去复习一下呀!

VBird 的备份策略
其实我在备份的策略相当的简单,我并没有想要将整个系统完全的备份下来,因为太耗时间了!而且就我的立场而言,似乎也没有这个必要,所以通常我只备份较为重要的档案而已!不过,由于我需要备份 /home 与网页数据,如果天天都备份,我想,系统迟早会受不了,所以我就将我的备份分为两大部分,一个是每周备份,一个则是每日备份,备份的时间点都选择在凌晨的 3~4 点左右!这个时候我就写了两个简单的 scripts ,分别来储存我的数据:
  1. 使用一颗加挂的硬盘来进行备份的功能,挂在 /disk2 当中;
  2. 每周进行的备份有 /home, /var, /etc, /boot, /usr/local 等目录;
  3. 每日进行的目前仅有 MySQL 数据库;
  4. 利用 /etc/crontab 来自动提供备份的功能;
  5. 在每周或每月定期的将数据分别 (a)烧录到光盘上面 (b)使用网络传输到另一部机器上面。

本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )

2002/07/06:第一次完成
2003/02/12:重新编排与加入 FAQ

2002/07/06 以来统计人数


Designed by VBird during 2001-2004.  Aerosol Lab.