#usb storage utility *** 信用社业务数据u盘备份程序1.0
#(c) copyright 2004
#编辑修改: 查明胜 zerozha@yahoo.com.cn
#==========================环境参数设置========================
#储蓄路径
bankstar_home=/usr/bankstar
#对公路径
bankacc_home=/usr/bankacc
#u盘系统装载点
mount_point=/mnt
#u盘设备名称
dev=/dev/dsk/1sc
#u盘备份保留天数
days=30
#==========================结束========================
month=
day=
#=============================更改路径
change_to_dir() {
dir=$1
[ -f $dir ] && rm -r $dir
[ ! -d $dir ] && mkdir $dir
cd $dir
}
#==============================end
#==============================删除逾期数据
deleteyqdata()
{
num=`ls $1/*.dat wc -l`
ges=`expr $num - $days`
[ $ges -gt 0 ] && {
num=0
for i in `ls $1/*.dat`
do
num=`expr $num + 1`
yes rm $i >/dev/null 2>/dev/null
[ $? -ne 0 ] && {
echo "\n[2;7;4m$i 删除失败 ![2;7;0m"
}
[ $num -ge $ges ] && break
done
}
}
#=================================结束
getyn()
{
while echo "\n[2;7;4m$* (y/n): [2;7;0m\07\c"
do
read yn
case $yn in
[yy]) return 0;;
[nn]) return 1;;
*) echo "\07\07"
esac
done
}
#================================================
dateanalyse()
{
value=`echo $1 awk 'begin { fs="/" }
{
year=$1
mon=$2
day=$3
if(year<1899 year >9999 mon<1 mon >12 \
day<1 day >31 !isdigit(mon) !isdigit(year) \
!isdigit(day) !isymd(year,mon,day))
printf("1")
else printf("0")
}
function isdigit(str)
{
for(i=1;i<=length(str);i++)
{
bit=substr(str,i,1)
if(bit<0 bit>9) return(0)
}
return(1)
}
function isleapyear(yearnum)
{
if((int(yearnum%4)==0 && int(yearnum%100)!=0)int(yearnum%400)==0)
return(1)
else return(0)
}
function isymd(yearnum,monnum,daynum)
{
dayarr["01"]=31
if(isleapyear(yearnum)) dayarr["02"]=29
else dayarr["02"]=28
dayarr["03"]=31
dayarr["04"]=30
dayarr["05"]=31
dayarr["06"]=30
dayarr["07"]=31
dayarr["08"]=31
dayarr["09"]=30
dayarr["10"]=31
dayarr["11"]=30
dayarr["12"]=31
if(daynum>0 && daynum<=dayarr[monnum])
return(1)
else return(0)
}' `
return $value
}
#========================================
getdate()
{
while true
do
echo "\n请输入$* (yyyy/mm/dd): \c"
read date
len=`expr length "$date"`
dateanalyse $date
[ $? -ne 0 -o $len -ne 10 ] && {
echo "\07\07\07"
echo "[2;7;4m日期错误,按回车键重新输入 ...[2;7;0m\c"
read key
continue
}
getdateyn "输入$*为: [2;1;7m $date [2;7;0m, 是否正确"
[ $? -eq 0 ] && break
done
}
#=============================================
getdateyn()
{
while echo "\n\07\07$* (y/n): \c"
do
read yn
len=`expr length "$yn"`
[ $len -ne 1 ] && continue;
case $yn in
[yy]) return 0;;
[nn]) return 1;;
*) echo "\07\c";;
esac
done
}
#=============================================程序主画面
main_menu() {
clear;
tput cup 1 1
echo "[2;7;4m 安庆市城郊信用合作联社业务数据u盘备份程序 ver 1.0 [2;7;0m\c"
echo "\n==========================================================\c"
tput cup 3 1
echo "[1][2;7;1m 储蓄业务数据备份 [2;7;0m [2][2;7;1m 储蓄业务数据恢复 [2;7;0m"
tput cup 5 1
echo "[3][2;7;1m 对公业务数据备份 [2;7;0m [4][2;7;1m 对公业务数据恢复 [2;7;0m"
tput cup 7 1
echo "[5][2;7;1m 查看u盘使用情况 [2;7;0m [6][2;7;1m 删除u盘全部数据 [2;7;0m"
tput cup 9 1
echo "[7][2;7;1m 选择删除u盘数据 [2;7;0m [8][2;7;1m 列u盘内容 [2;7;0m"
tput cup 11 1
echo "[q][2;7;1m退 出 [2;7;0m"
tput cup 13 1
echo "\n=========================================================="
echo " 现在时间:"`date '+%y年%m月%d日'`",u盘数据将保留"$days"天"
echo "=========================================================="
echo "请选择:\c";
}
#=============================================end
check_privilege() {
id_num=`id -u `
if [ id_num -ne 0 ]
then
echo "请用超级用户执行此程序!!!!"
sleep 3
exit
fi
}
#============================================查看u盘使用情况
usd_statistics() {
total=`df -kv $dev grep $dev awk '{print $3}'`
used=`df -kv $dev grep $dev awk '{print $4}'`
free=`df -kv $dev grep $dev awk '{print $5}'`
percent=`df -kv $dev grep $devawk '{print $6}'`
echo " u 盘 当 前 使 用 情 况 "
echo " --------------------------------------------------------------------"
echo " 总容量(k) 已用(k) 剩余(k) 百分比"
echo " ${total} ${used} ${free} ${percent}"
echo " --------------------------------------------------------------------"
echo " 按回车键继续......\c"
read any
}
#============================================end
#============================================删除u盘所有数据
delete_all() {
echo "你确定要删除u盘所有数据吗?(y/n)\c"
cd $mount_point
read opt
if [ $opt = "y" ]
then
rm -rf *
fi
}
#============================================end
#============================================选择删除u盘数据
delete_single() {
cd $mount_point
echo "u盘当前目录:"
lx
echo "请输入要删除目录:\c"
read delete_dir
if [ -d $delete_dir -o -f $delete_dir ]
then
echo "你确定要删除${delete_dir}吗?(y/n)\c"
read opt
if [ $opt = "y" ]
then
rm -rf $delete_dir
fi
else
echo "<$delete_dir>目录或文件不存在"
sleep 2
fi
}
#=========================================================
list_file() {
cd $mount_point
echo "u盘当前目录:"
l
echo "任一键返回"
read any
}
backup_bankstar()
{
rm -r /tmp/bankstar.exp >/dev/null 2>/dev/null
rm -r -f /tmp/bankstar >/dev/null 2>/dev/null
rm -r -f /tmp/bankstar.z >/dev/null 2>/dev/null
[ -f "/tmp/bankdata" -o -f "/tmp/bankdata.z" ] && {
echo "请先清理 /tmp 然后再备份!\n"
read any
return
}
cd /tmp
dbexport bankstar
[ $? -eq 0 ] {
echo "数据库卸载失败!\n"
read any
return
}
tar cvf /tmp/bankstar /usr/bankstar/com /usr/bankstar/data /usr/bankstar/etc /usr/bankstar/frm /tmp/bankstar.exp
chmod 777 /tmp/bankstar >/dev/null 2>/dev/null
compress -h /tmp/bankstar
chmod 777 /tmp/bankstar.z >/dev/null 2>/dev/null
rm -r -f /tmp/bankstar.exp
[ $? -eq 0 ] return
cszd=`dbaccess bankstar -<<-end
select val from gcs where dh="005";
end`
gzrq=`echo $cszd awk 'begin { fs=" " }
{
split($2,a,"/")
rq=sprintf("%s%s%s",a[1],a[2],a[3])
printf rq
}'`
echorq=`echo $cszd awk 'begin { fs=" " }
{
split($2,a,"/")
rq=sprintf("%s/%s/%s",a[1],a[2],a[3])
printf rq
}'`
echo "正在备份$echorq储蓄数据...."
cd /mnt
change_to_dir bankstar
cp -f /tmp/bankstar.z "$gzrq".dat
aa=$?
rm -f /tmp/bankstar.z
[ $aa -eq 0 ] {
echo "文件(bankstar.z)拷贝失败!!!"
read any
return
}
echo "[2;7;1m备份数据成功 ! 按回车键返回...[2;7;0m\c"
deleteyqdata /mnt/bankstar
read any
echo
}
recover_bankstar()
{
getdate "所恢复数据的日期"
date=`echo $date awk 'begin { fs="/" }{printf("%s%s%s",$1,$2,$3)}'`
bkupfile="$date.dat"
[ ! -f /mnt/bankstar/$bkupfile ] && {
echo "\n\07\07[2;7;4m${date}无备份数据 ! 按回车键返回...[2;7;0m\c"
read key
return 1;
}
cd /tmp
rm bankstar.z 2>/dev/null
cd /mnt/bankstar
[ -f "$date.dat" ] { echo "\n $date.dat(数据)文件不存在!!!"
read key
return
}
echo "正在拷贝数据"
cp $date.dat /tmp/bankstar.z
[ $? -eq 0 ] { rm -r /tmp/bankstar.z>dev/null 2>/dev/null
read key
return
}
cd /tmp
rm -r bankstar 1>/dev/null 2>/dev/null
uncompress bankstar.z
[ $? -eq 0 ] { rm -r bankstar.z>/dev/null 2>/dev/null
read key
return
}
tar xvf bankstar
[ $? -eq 0 ] { rm -r bankstar.z >/dev/null 2>/dev/null
rm -r bankstar >/dev/null 2>/dev/null
return
}
dbaccess - -<<-end >/dev/null 2>/dev/null
drop database bankstar;
end
dbimport bankstar -l -i ./
flag=$?
while [ $flag -ne 0 ]
do
getyn "加载数据库失败 ! 是否重新加载数据库" return
dbaccess - - <<-end
drop database bankstar;
end
dbimport $dbname -l -i ./
flag=$?
done
echo "[2;7;1m恢复成功 ! 按回车键返回...[2;7;0m\c"
rm -r -f /tmp/bankstar.exp 2>/dev/null
read key
return
}
#备份对公业务数据
backup_bankacc()
{
cd /tmp
rm -r single.exp 2>/dev/null
rm single.z 2>/dev/null
dbexport single
flag=$?
while [ $flag -ne 0 ]
do
getyn " 数据卸载失败 ! 是否重新卸载" {
rm single.z >/dev/null 2>/dev/null
echo
return
}
rm -r single.exp 2>/dev/null
dbexport single
flag=$?
done
tar cvf single single.exp
flag=$?
while [ $flag -ne 0 ]
do
getyn " 数据打包失败 ! 是否重新打包" {
rm single.z >/dev/null 2>/dev/null
echo
exit $flag
}
rm single 2>/dev/null
tar cvf single single.exp
flag=$?
done
yes compress single
flag=$?
while [ $flag -ne 0 ]
do
getyn " 数据压缩失败 ! 是否重新压缩" {
rm single.z >/dev/null 2>/dev/null
echo
return
}
rm single.z 2>/dev/null
yes compress single
flag=$?
done
cszd=`dbaccess single -<<-end
select rq from cszd;
end`
gzrq=`echo $cszd awk 'begin { fs=" " }
{
split($2,a,"/")
rq=sprintf("%s%s%s",a[1],a[2],a[3])
printf rq
}'`
echorq=`echo $cszd awk 'begin { fs=" " }
{
split($2,a,"/")
rq=sprintf("%s/%s/%s",a[1],a[2],a[3])
printf rq
}'`
echo "正在备份$echorq对公业务数据...."
cd /mnt
change_to_dir single
cp -f /tmp/single.z "$gzrq".dat
aa=$?
rm -f /tmp/single.z
[ $aa -eq 0 ] {
echo "文件(single.z)拷贝失败!!!"
return
}
echo "[2;7;1m备份数据成功 ! 按回车键返回...[2;7;0m\c"
deleteyqdata /mnt/single
read any
echo
}
#恢复对公业务数据
recover_bankacc()
{
getdate "所恢复数据的日期"
date=`echo $date awk 'begin { fs="/" }{printf("%s%s%s",$1,$2,$3)}'`
bkupfile="$date.dat"
[ ! -f /mnt/single/$bkupfile ] && {
echo "\n\07\07[2;7;4m${date}无备份数据 ! 按回车键返回...[2;7;0m\c"
read key
return 1;
}
cd /tmp
rm single.z 2>/dev/null
rm -r single.exp 2>/dev/null
cd /mnt/single
[ -f "$date.dat" ] { echo "\n $date.dat(数据)文件不存在!!!"
return
}
echo "正在拷贝数据"
cp $date.dat /tmp/single.z
[ $? -eq 0 ] { rm -r /tmp/single.z>dev/null 2>/dev/null
return
}
cd /tmp
rm -r single 1>/dev/null 2>/dev/null
uncompress single.z
[ $? -eq 0 ] { rm -r single.z>/dev/null 2>/dev/null
return
}
tar xvf single
[ $? -eq 0 ] { rm -r single.z >/dev/null 2>/dev/null
rm -r single >/dev/null 2>/dev/null
return
}
dbaccess - -<<-end >/dev/null 2>/dev/null
drop database single;
end
dbimport single -l -i /tmp
flag=$?
while [ $flag -ne 0 ]
do
getyn "加载数据库失败 ! 是否重新加载数据库" return
dbaccess - - <<-end
drop database single;
end
dbimport single -l -i /tmp
flag=$?
done
echo "[2;7;1m恢复成功 ! 按回车键返回...[2;7;0m\c"
rm -f /tmp/single.exp 1>/dev/null 2>/dev/null
read key
return
}
##main programe
trap '' 2 3
#if [ ! -f "./usu.cfg" ]
#then
# echo "没有配置文件(usu.cfg),请与供应商联系"
# exit
#fi
#. ./usu.cfg
check_privilege #检查权限
mount -o lower ${dev} ${mount_point}
if [ $? -ne 0 ]
then
echo "u盘安装有误 ,请检查!!!!"
sleep 3
exit
fi
while true
do
main_menu
read opt
case $opt in
1)
backup_bankstar
;;
2)
recover_bankstar
;;
3)
backup_bankacc
;;
4)
recover_bankacc
;;
5)
usd_statistics
;;
6)
delete_all
;;
7)
delete_single
;;
8)
list_file
;;
q)
cd /
umount $dev
[ $? -ne 0 ] && echo "卸载u盘出错"
exit
esac
done
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器