如何完成UNIX系统中大批量数据的自动备份

【如何完成UNIX系统中大批量数据的自动备份】
在Unix系统中 , 为了使数据备份变得轻松、容易、安全 , 最好的办法就是自动安排系统例行工作(系统调度) , 在系统空闲时间里自动执行任务 。如定期删除一些流水文件、日志文件,定期完成数据的本地备份和异地备份等 。这样既发挥了UNIX系统的卓越功能 , 又减轻了系统管理员的工作量 , 使数据备份做到及时安全 。
一、建立数据备份用户
首先建立一个用户 , 如:userbk , 将该用户的属主、属组设定为Informix , 权限为755 。在该用户下存放备份的各种数据 , 以便统一备份到磁带上或异地机器上 。
二、用系统例行工作安排作业
UNIX系统有一个始终运行的守护进程 , 该进程可以在正常调度的间隙运行作业,用户可以在一个文件中指定crontab命令运行任务,cron守护程序在初始化或该文件修改后自动读取其内容 。crontab文件中指定的各个域为:
分钟 小时 月 日 星期几 命令
如文件/usr/spool/cron/crontabs/root存放超级用户调度的命令,内容为:
17 5  0 /etc/cleanup>/dev/null
0 2  0,4 /usr/lib/cron/logchecker
3 3 /usr/lib/cleantmp>/dev/null
1 3 /etc/setclk-rd1800>/dev/null 2>&1
#5 18 1-5/usr/lib/sa/sa2 -s 8:00 -e 18:01-i 1200-A
0 4 0 /etc/custom -V symlinks;#CUSTOM -SYMLINK -REPORT
0 0 1-5 scosh cronsched-r
0 01 scosh cronsched-wr
第一行的作用是在每周星期日5:17执行/etc/cleanup来清除系统上的某些日志文件 。第二行的作用是每周星期日和星期四2:00执行/usr/lib/cron/logchecker来检查守护进程cron的日志文件 。第三行为每天3:03运行/usr/lib/cheantmp命令清除指定目录中的临时文件等 。
用户可以用命令crontab -u root -e来编辑此文件,在文件最后加入一行内容:
0 3  kill-user
此行内容为每天3:00运行kill-user,此命令文件的任务是终止某些用户的进程 。
同样,用命令crontab-u userbk -e来编辑userbk文件,安排userbk用户的作业任务,内容如下:
10 3 bdbf
30 5  0 ftp -invydbf.log
0 2  1 rm .log
第一行内容为每天3:10运行bdbf程序,使数据备份至/usr/userbk目录下, 并拷贝到磁带上 。第二行内容为每周星期日5:30运行ydbf程序,将备份至/usr/userbk目录下的数据通过网络传送到异地机器上存贮,并将备份信息写入 ydbf.log日志文件中 。第三行内容为每月1日2:00删除/usr/userbk下的日志文件 。
三、本地数据备份
笔者使用的操作平台为SCO Openserver5.04系统 , 数据库为Informix4.0和Informix-Online7.3两种版本 。在Informix4.0上使用的业务有“人身保险”(用户名rsbx)、“子女备用金保险”(用户名zbbx)等 。数据以字符串形式保存在各自的目录下,备份时可用tar命令或cpio命令将整个用户目录备份即可 。而在Informix-Online7.3上应用的有“综合处理系统”(用户名c4g1 , 库名picc2.dbs),“会计记帐系统”(用户名为claf , 库名account.dbs)等 , 数据存放在Online指定的设备上,平时采用ontape -s命令备份,但由于此命令实现自动备份较困难,并且不能和其它数据备份到一盘磁带上,会造成备份介质的浪费 。所以最好采用 dbexport命令备份数据 。运行dbexport命令的前提是调用数据库的相关用户必须
退出 , 一旦有一个应用点没有退出 , 备份就会失败 。为了确保数据的安全备份 , 需编制一个终止进程的命令文件 , 即前述中由超级用户调度的kill-user程序 。
程序1:/usr/bin/kill-user
ps -u rsbx >tmp-a
ps -u zbbx >>tmp-a
ps -u c4gl >>tmp-a
ps -u claf >>tmp-a
cut -cl-6 tmp-a >tmp-b
while read a

推荐阅读