鸟哥的 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. 备份哪些档案:
    例如在账号管理那一篇当中,我们知道最起码主机的账号信息在/etc/*及/home/*等等档案都是重要的!
     
  2. 选择什么备份的媒介:
    是可擦写光盘、另一棵硬盘、同一颗硬盘的不同 partition、还是使用网络备援系统?哪一种的速度最快,最便宜,可将数据保存最久?
     
  3. 考虑备份的方式:
    是完全备份(类似 ghost)还是部分备份即可?
     
  4. 备份的频率:
    例如 MySQL 数据库是否天天备份、若完全备份,需要多久进行一次?
     
  5. 备份使用的工具为何:
    是 tar 还是 cpio 等等?
底下我们就来谈一谈这些问题的解决之道吧! ^_^

哪些 Linux 数据具有备份的意义
具有备份意义的档案通常可以粗分为两大类,一类是系统一类则是类似网络服务的数据库,那么各有哪些档案需要备份的呢?我们就来稍微分析一下。
  • 主机系统需要备份的档案
    这方面的档案主要跟『账号』有关系!主要有哪些账号的档案需要备份呢?就是 /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/ 也最好备份一下!
  • 网络服务的数据库方面:
    这部份的数据可就多而且复杂了,如果您的网络套件设定都是以原厂提供的为主,那么您的设定档案大多是在 /etc 底下,所以这个就没啥大问题了!但是若您的套件大多来自于自行的安装,那么 /usr/local 这个目录可就相当的重要了!这里我们假设我们提供的服务套件都是使用原厂的 RPM 安装的!所以要备份的数据文件有:
    • 数据设定档案:
      /etc/ 整个目录
      /usr/local/ 整个目录
    • 系统 www + MySQL:
      /var/www 整个目录 ( 系统的家目录 )
      /var/lib/mysql 整个目录
    • 其它你在 Linux 主机上面提供的数据库数据文件!
  • 推荐需要备份的目录:
    由上面的介绍来看的话,那么如果您的硬件或者是由于经费的关系而无法全部的数据都予以备份时, VBird 建议您至少需要备份这些目录呦!
    • /boot
    • /etc
    • /home
    • /root
    • /usr/local
    • /var(注:这个目录当中有些暂存目录则可以不备份!)
  • 不需要备份的目录:
    有些数据是不需要备份的啦!例如我们在 档案与目录系统 里头提到的 /proc 这个目录是在记录目前系统上面正在跑的程序  ( processes ) ,这个数据根本就不需要记录的呢!所以就把他拿掉!此外,外挂的机器,例如 /mnt 里面都是挂载了其它的硬盘装置、光驱、软盘机等等,这些也不需要备份吧!?所以啰!底下有些目录可以不需要备份啦!
    • /dev :这个随便你要不要备份
    • /proc:这个真的不需要备份啦!
    • /mnt :如果你没有在这个目录内放置你自己系统的东西,也不需要备份
    • /tmp :干嘛存暂存档!不需要备份!

选择的备份装置
在备份的时候,选择一个『数据存放的地方』也是很需要考虑的一个因素!什么叫做数据存放的地方呢?讲个最简单的例子好了,我们知道说,较为大型的机器都会使用 tap 这一种磁带机来备份数据,而如果是一般个人计算机的话,很可能是使用类似 Mo 这一种可擦写式光盘片来存取数据!但是您不要忘记了几个重要的因素,那就是万一您的 Linux 主机被偷了呢?这不是不可能的,我们隔壁校区的研究室曾经遭小偷,里面所有的计算机都被偷走了!包括『 Mo 片』,当他们发现的时候,一开始以为是硬件被偷走了,还好,他们都有习惯进行备份,但是很不幸的,这一次连『备份的 MO 都被拿走了!』怎么办?!只能道德劝说小偷先生能够良心发现的将硬盘拿回来啰!唉~真惨....
这个时候,所谓的『远程备援系统』就显的相当的重要了!什么是远程备援呀!说的太文言了!呵!简单的说,就是将你的系统数据『备份』到其它的地方去,例如说我的机器在台南,但是我还有另一部机器在高雄老家,这样的话,我可以将台南机器上面重要的数据都给他定期的自动的 ftp 回去!也可以将家里重要的数据给他丢到台南来!这样的最大优点是可以在台南的机器死掉的时候,即使是遭小偷,也可以有一个『万一』的备份所在!但是缺点是~~频宽严重的不足!在这种状态下,所能采取的策略大概就是『仅将最重要的数据给他 ftp 回去啰!』至于一些只要系统从新安装就可以回复的咚咚!那就没有这个必要了!当然啰,如果你的网络是属于 T1 专线的话,那么完整备份将数据丢到另一地去,呵呵!也是很可行的啦!只是我没有那么好命....唉~穷学生一个~
在此同时,我们再来谈一谈,那么除了这个『相对较为安全的备份』方法之外,毕竟这种网络备援系统实在是太耗频宽了!如果像我们一般家用的 ADSL 根本就是吃不消!那么怎么办!还有其它的方法吗?喔~那就只好使用近端的装置来备份啰!这也是目前我们最常见到的备份方法!例如一般我们使用的 Tap, Mo, Zip, CD-RW, 还有备份用抽取式硬盘等等!那么在选择上需要注意些什么呢?需要注意的地方有几点:
  • 速度要求:『备份』基本上在 Linux 主机上面也是蛮耗系统资源的!因为需要将系统的数据拷贝到其它装置上面去,这个时候 CPU 几乎是 loading 100%!您总不希望系统就这样给他挂点吧!?此外,有些系统的数据实在太多咯,怎么样也备份不完!所以啰,越快的储存装置是越好的!如果您是个重视速度甚于一切的人,那么我觉得抽取式硬盘是个不错的方式,只不过.....目前我知道的抽取式硬盘都需要冷开机才行,不太符合 Linux 主机 24 小时全年无修的状态....所以,近年来速度越来越快的 MO, CD-RW 就变的很方便啰!至于 tap ,在速度上完全是落后的.....至于使用第二颗硬盘备份,类似 Raid, 或者是安装一颗备份的硬盘在 Linux 系统当中,这个方案也很好,而且速度上绝对是最具优势的!但是就如同我们刚刚提到的,万一你的机器被偷了,连带的,这颗备份的硬盘自然也就不见了.....
  • 储存容量:这也是一个需要考虑的因素!而且常常是最大考虑的因素呢!虽然目前硬盘越来越便宜(前两天 2002/07/01 去网络上看一下价格,下一跳, 80GB 的硬盘已经不到 4000 就有了!天那.....),但是毕竟就如同前面说的,抽取式硬盘需要将系统冷开机,而建构在系统内的硬盘又同时具由不安全的成分在,这个时候一个大容量的替代方案就显的很重要了!虽然 CD-RW 与 MO 可以提供不错的速度,但是其容量毕竟不足(目前 MO 最大大约可到 1.3G ),所以说,具有大容量的 tap (磁带容量最小的一款也可以到达 8 GB 左右!)就相当的具有这方面的优势了!而且携带方便,存放也容易!更可以带着走~~
  • 经费与资料可靠性:在经费不短缺的情况下,我们当然会建议您上面的几个装置都买一买,然后分别在不同的时间进行不同的备份作业(底下我们有些建议的啦! ^_^)!但是如果经费也是需要考虑的话,那么磁带机这个目前还算贵重的物品可能暂时还动不到!这个时候近来渐渐便宜的 CD-RW 就显的活跃的多了!而且光盘片也可以保存很久的ㄋㄟ~当然,目前应该不会有人以软盘来备份了吧!?呵呵!软盘可是相当不安全的(每次我看到有人拿软盘拷贝数据,我都会要他 copy 完成之后,立刻到另外一部计算机 copy 出来试看看,果不其然,十次里面有八次对方的软盘片都有问题~)
无论如何,如果经费够的话, Tap 备份数据真的是一个不错的点子!因为他的高容量让我好满意!再来,如果经费稍微短缺的话,那么 CD-RW 经常性的将数据烧录下来,这也是蛮好的,尤其 CD 片又不占空间!再来,如果还是没有办法,那么一颗内建在 Linux 的硬盘用来备份也是不错的!什么!!连备份的硬盘都没有,唉!怎么跟我一样~这个时候没办法啦,用原来的安装系统的硬盘,多留一个 partition 用来当作备份之用吧(这也是目前我常用的方法之一!)
一些装置的档案代号
  • 光驱: /dev/cdrom
  • 磁带机: /dev/st0 ( SCSI 界面 ), /dev/ht0 ( IDE 界面 )
  • 软盘机: /dev/fd0, /dev/fd1
  • 硬盘机: /dev/hd[a-d][1-16] ( IDE 界面 ), /dev/sd[a-p][1-16] ( SCSI 界面 )
  • 打印机: /dev/lp[0-2]
    特别留意的是磁带机呦!如果你有钱的话,那么买一部磁带机是相当不错的建议!没钱的话,买 IDE 接口的硬盘也很不错!! ^_^

备份的种类
    讲了好多口水了,还是没有讲到重点,真是的....好了,再来提到那个备份的种类,其实前面已经提到一些了!基本上,备份就可以直接分为『完全备份』与『部分备份』这两方面:

  • 完全备份(Full Backup):
    完全备份就是将根目录『 / 』里头所有的数据都给他一股脑儿的备份下来,不过,这个时候所需要的『时间与备份装置的容量』就显的相当的重要了!用在大型的企业是有一定的需求的,但是像我们这一种小网站的话,完整的备份似乎太过于浪费的(毕竟我们可以用时间换取金钱....了不起又重新安装了....)。但是刚刚完成的系统(还没有对外 Internet 上面服务)通常可以的话,就赶快给他备份一下吧!这样的一个备份是最干净的!用在系统的最干净还原是相当有帮助的!这是因为有的时候我们的系统被入侵了,但是 root 并不知道,这个时候老是拿最近的备份数据来还原也没有用呀!因为连同被 cracker 修改过的档案也被我们备份下来了呀!呵呵!所以啰,将一个最原始的系统的数据备份下来还是有其必要性的!此外,这种完整备份的频率可不能太高,因为太耗系统资源了

  • 部分备份(Implement backup)
    部分备份就如同上面提过的,备份那些最重要的数据就好了!反正系统不见的话,只要重新安装就回来了,数据只要妥善的备份重点数据,那么系统的复原还是一个很快速的工作!以我为例,我通常都喜欢仅备份最重要的信息,因为重新安装一次系统时间花的并不长(一个钟头内一定可以搞定!)而账号、服务设定、原本系统的数据库、等等,几乎都只要 copy 回来就 OK 了!例如:我们这个网站在开始营运初期,虽然交通流量很大了,还是常出状况,那个时候重新安装了好几次(似乎是硬件的问题!),每次都是一个下午就搞定了!所以啰,我是一直认为『重点备份』就真的是蛮重要的!尤其很多时候,你的数据被吃掉都只是『某个网络服务』,那么如果仅进行完整备份的工作时,呵呵!单单是将系统先读出来,再取出所要还原的部分,呵呵!就可以累死你了....
如同上面提到的,这两个方式各有优缺点啦!那么如果可能的话,是否两个都来进行一下最好呢?呵呵!答对了!给你拍拍手!我们通常的规划就是这样,重点部分的备份频率较高,可能每天都需要备份的!至于如果是完整备份的话,那么一个星期、甚至一个月在备份一次都可以!目前我的系统上面就是每天备份 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)使用网络传输到另一部机器上面。

  • 日常备份行为:
    底下提供我的备份的 scripts ,希望对大家有点帮助!
     
    [root @test /root]# vi backupweekly.sh
    #!/bin/bash
    # This file will backup
    #       1. username (in /etc, passwd, shadow, group, gshadow, aliases,
    #          aerosol510.mail, and /var/spool/mail, total 7 files)
    #       2. httpd (in /etc/httpd/conf, httpd.conf and /var/www/html
    #          /home/vbird will be tared !)
    #       3. smb (in /etc/samba/*, all files will be copied!)
    #       4. The safe and driver files
    #          /etc files
    #          /var/lib/mysql
    #
    # ===========================================================================
    # History
    # Make by VBird 2000/12/16 first time!
    # ============================================================================
    # 建立备份的路径!这样的好处是可以清楚的知道每个档案放置的地点!
    usernamep=/disk2/backup/username
    httpdp=/disk2/backup/httpd
    smbp=/disk2/backup/smb
    otherp=/disk2/backup/others
    netpara=/disk2/backup/network
    ftpp=/disk2/backup/ftp
    #1. username, sendmail and their home directories and local setting
    cp /etc/passwd $usernamep
    cp /etc/shadow $usernamep
    cp /etc/group $usernamep
    cp /etc/gshadow $usernamep
    cp /etc/aliases $usernamep
    tar -zcf $usernamep/mail.tar.gz /var/spool/mail
    tar -zcf $usernamep/home.tar.gz /home
    tar -zcf $usernamep/usr.local.tar.gz /usr/local
    #2. httpd and mysql and counter data
    cp /etc/httpd/conf/httpd.conf $httpdp
    tar -zcf $httpdp/webcgi.tar.gz /var/www
    tar -zcf $httpdp/counter.tar.gz /usr/local/Counter/data
    /etc/rc.d/init.d/mysqld stop
    tar -zcf $httpdp/mysql.lib.tar.gz /var/lib/mysql
    /etc/rc.d/init.d/myslqd start
    #3. smb
    cp /etc/samba/lmhosts $smbp
    cp /etc/samba/MACHINE.SID $smbp
    cp /etc/samba/smb.conf $smbp
    cp /etc/samba/smbpasswd $smbp
    cp /etc/samba/smbusers $smbp
    #4. safe and drivers
    tar -zcf $otherp/etc.tar.gz /etc
    tar -zcf $otherp/mrtg.cfg.tar.gz /usr/local/mrtg-2/bin
    tar -zcf $otherp/virus.tar.gz /usr/local/virus
    cp /etc/cron.weekly/backup /$otherp
    #5. network parameters
    cp /etc/hosts           $netpara
    cp /etc/hosts.allow     $netpara
    cp /etc/hosts.deny      $netpara
    cp /etc/sysconfig/network               $netpara
    cp /etc/modules.conf                    $netpara
    cp /etc/sysconfig/network-scripts/ifcfg-eth0    $netpara
    #6. ftp services
    cp /etc/ftp*    $ftpp
     
    当然啰,上面的 script 是适合我的状态,所以,你要使用的话,还得要修修改改呦!不要照着使用,会有问题的!

  • 每日备份资料 scripts:
    再来,继续提供一下每日备份的数据:
     
    [root @test /root]# vi backupdaily.sh
    #!/bin/bash
    #
    # This program is created by VBird 2002/06/13
    #
    # What is this program?
    #       This program will backup the following messages:
    #       1. MySQL data files ( /var/lib/mysql );
    #       2. HTTP's CGI-directory ( /var/www/cgi-bin )
    #
    # HOW TO RUN THIS PROGRAM?
    #       Just put the file into /etc/crontab job,
    #       or put this file's link file to /etc/cron.daily!
    #
    ###############################################################
    # History
    #  Date         What                                    Who
    #==============================================================
    # 2002/06/13    First time to run this program
    #               The only backup files are MySQL and CGI VBird
    #==============================================================
    # 0. Get the date messages and backup directory
    day=`date +%Y-%m-%d`
    basedir="/disk2/backup/daily"
    # 1. MySQL  ( PATH = /var/lib/mysql )
    /etc/rc.d/init.d/mysqld stop
    cd /var/lib
    tar -zcf "$basedir"/mysql."$day".tar.gz mysql 2> /dev/null
    /etc/rc.d/init.d/mysqld start
    # 2. CGI ( PATH = /var/www/cgi-bin )
    cd /var/www
    tar -zcf "$basedir"/cgi-bin."$day".tar.gz cgi-bin 2> /dev/null
     
    好啦!这样一来每天的 MySQL 数据库就可以自动的被记录在 /disk2/backup/daily 里头啦!而且还是文件名称会自动的改变的呦!呵呵!我很喜欢!OK!再来就是开始让系统自己跑啦!怎么跑?!就是 /etc/crontab 呀!提供一下我的相关设定呦!感谢网友 duncanlo 兄提供的好主意!在备份之前将 MySQL 数据库的服务先 stop ,这样一来在在线备份的时候会比较 OK !!
     
    [root @test /root]# vi /etc/crontab
    # 加入这两行即可 ( 请注意您的档案目录!不要照抄呦! )
    # backup scripts
    30 3 * * 0 root /etc/root/backupweekly.sh
    30 2 * * * root /etc/root/backupdaily.sh
     
    这样系统就会自动的在每天的 2:30 进行 MySQL 的备份,而在每个星期日的 3:30 进行重要档案的备份!呵呵!您说,是不是很容易呢!?但是请千万记得呦!还要将 /disk2 当中的资料 copy 出来才行耶!否则整部系统死掉的时候....那可不是闹着玩的!

  • 远程备援系统:
    除此之外,那么还有没有保险的方式呢?呵呵!刚刚前面不是提过远程备援吗?最简单的说法就是『使用因特网的方法,将你的数据送到远程主机去备份!』那样就 OK 啦!那么我们怎么使用远程备份的方法呢?那就用最简易的 FTP 吧!不过,在此之前,你必需要了解的是:
     
    1. 备份的资料最好『越精简越好』;
    2. 远程主机必需提供 FTP 服务(当然,其它的服务例如 sftp 也是可以的,只要能够将数据传上去就好了!)
    3. 远程主机必需要可以符合你上传的属性设定,例如 quota 容量、储存目录的属性等等!
     
    好了,那么我们就用最简单的自动FTP scripts来帮我们达成自动档案上传的功能吧!
     
    #!/bin/bash
    #
    # WHAT IS THIS:
    # This program will automatically put the backup file
    # from this host to another hosts
    #
    # HISTORY
    # When          Who     What
    # 2002/10/14    VBird   First time to release
    #
    ###################################################################
    # 1. input your FTP's ID and PassWord
      host="192.168.1.100"
      id="testing"
      pw='your.passwd'
    # 2. what is the correct and remote working directory
      basedir="/disk2/backup"            # 本机上面的欲上传档案路径
      remodir="/disk2/backup_testinghost"      # 远程主机欲备份的目录
    # 3. the tar file
      filename="backup.testinghost.tar"
    # 4. starting tar work
    # 因为我将所有预备被传送的数据都分门别类的放置在 /disk2/backup 这个目录中,
    # 但是FTP传送档案的时候,毕竟一个档案送完会比较容易与快速,
    # 所以我先将好几个档案 tar 成一个!
      cd $basedir
      tar -cvf $filename *
    ###################################################################
    # 5. 底下就是 ftp 自动联机并操作上传手续的 script !
      ftp -n "$host" > "$basedir"/"$filename".log 2> "$basedir"/"$filename".log <<EOC
      user    $id         $pw
      binary
      cd      $remodir
      put     $filename
      bye
      EOC
    # 6. End of this file
    #    Please remenber, change permission of this file!
    #    Because there are many personal secure in this file!
     
    好了!大家赶紧写一个适合自己的备份 script 来进行备份的行为吧!重要重要喔!

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

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

2002/07/06 以来统计人数


Designed by VBird during 2001-2004.  Aerosol Lab.