其实我在备份的策略相当的简单,我并没有想要将整个系统完全的备份下来,因为太耗时间了!而且就我的立场而言,似乎也没有这个必要,所以通常我只备份较为重要的档案而已!不过,由于我需要备份 /home 与网页数据,如果天天都备份,我想,系统迟早会受不了,所以我就将我的备份分为两大部分,一个是每周备份,一个则是每日备份,备份的时间点都选择在凌晨的 3~4 点左右!这个时候我就写了两个简单的 scripts ,分别来储存我的数据:
- 使用一颗加挂的硬盘来进行备份的功能,挂在 /disk2 当中;
- 每周进行的备份有 /home, /var, /etc, /boot, /usr/local 等目录;
- 每日进行的目前仅有 MySQL 数据库;
- 利用 /etc/crontab 来自动提供备份的功能;
- 在每周或每月定期的将数据分别 (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! # ============================================================================ # 建立备份的路径!这样的好处是可以清楚的知道每个档案放置的地点! #1. username, sendmail and their home directories and local setting #2. httpd and mysql and counter data #3. smb #4. safe and drivers #5. network parameters #6. ftp services |
当然啰,上面的 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 吧!不过,在此之前,你必需要了解的是:
- 备份的资料最好『越精简越好』;
- 远程主机必需提供 FTP 服务(当然,其它的服务例如 sftp 也是可以的,只要能够将数据传上去就好了!)
- 远程主机必需要可以符合你上传的属性设定,例如 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 来进行备份的行为吧!重要重要喔!