免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4077 | 回复: 19
打印 上一主题 下一主题

[SCO UNIX] U盘备份shell 1.2.1版for中创。与大家分享。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-22 13:33 |只看该作者 |倒序浏览
本版本,基本上放弃了新太阳的代码。最近在苦学c/c++,希望下个版本,是C语言版。

代码有些长,但是由于涉及的功能多,已经无法再精简了。

本程序已经在辖内网点大量使用,暂未发现问题。欢迎大家指正!

附件usb.jpg下载后,改名usb.rar,解压缩就行了。

压缩包中,包含完整的程序,usb备份主程序,密码修改检查程序,还有独有特色的自动安装模块,帮助文件。



转载请注明出处!


  1. #USB Storage Utility *** 信用社业务数据U盘备份程序1.2.1
  2. #(c) Copyright 2004  
  3. #编辑修改: 查明胜 zerozha@yahoo.com.cn
  4. #最后修改时间:2004-9-18
  5. #
  6. #=============================
  7. #==========================环境参数设置========================
  8. cx_backup_dir=/usr/tmp/bankstar #储蓄硬盘备份路径
  9. dg_backup_dir=/usr/tmp/single   #对公硬盘备份路径
  10. MOUNT_POINT=/mnt                #U盘系统装载点
  11. DEV=/dev/dsk/1sC                #U盘设备名称
  12. DAYS_U=30                       #U盘备份保留天数
  13. DAYS_H=360                      #硬盘备份保留天数
  14. #==========================结束========================

  15. MONTH=
  16. DAY=
  17. #
  18. change_time()
  19. {
  20. echo "======================== 系 统 时 间 修 改 ========================="
  21. echo "例如:修改时间为9月1日18点30分,输入内容为:09011830,回车确认。"
  22. echo "退出请输入:q"
  23. echo ""
  24. echo " 现在系统时间是:`date '+%Y年%m月%d日%H时%M分'` "
  25. echo " 请输入新的时间: \c"
  26.         read input_date rest
  27.         [ "$input_date" ] || continue
  28.         case $input_date in
  29.         q)
  30.         echo "放弃退出。"
  31.         sleep 3
  32.         return 1
  33.         ;;
  34.         *)
  35.         sel_long=`expr length $input_date`
  36. [ $sel_long -eq 8 ] || {
  37.                                                                                                 msg_box "输入错误"
  38.                                                                                                 return 1
  39.                                         }
  40.         date -t $input_date 1>;/dev/null 2>;/dev/null
  41.         echo "修改完成。"
  42.         echo " 新的系统时间是:`date '+%Y年%m月%d日%H时%M分'` "
  43.         echo "如果不正确,请重新使用本功能更改时间\c"
  44.         read any
  45.         return 1
  46.         esac

  47. }
  48. ########
  49. msg_box()
  50. {
  51. #printf ""
  52. cat <<MSG
  53.  == 提   示 ==   $@,按任意键继续.
  54. MSG
  55. read any
  56. }

  57. #装载U盘
  58. mount_U()
  59. {
  60. msg_box "请将U盘插入USB接口"
  61. mount -o lower ${DEV} ${MOUNT_POINT}
  62. if [ $? -ne 0 ]
  63. then
  64. msg_box "U盘安装有误 ,请检查"
  65. return 1
  66. else
  67. return 0
  68. fi

  69. }
  70. #
  71. #卸载U盘
  72. unmount_U()
  73. {
  74.                         cd /usr/usb
  75.                         umount $DEV
  76.                         [ $? -ne 0 ]  && msg_box "卸载U盘出错"
  77.                         }
  78. ##


  79. ###
  80. copy_special() #拷贝特殊日备份
  81. {
  82.         cd $MOUNT_POINT
  83.         change_to_dir special
  84. clear
  85. cat <<SPECIAL

  86.       特殊日备份数据拷贝程序        
  87. ====================================
  88. [1] 储蓄:                           
  89.     月终备份        (每月底)        
  90.     结息前数据备份  (每年6月30日)   
  91.     结息后数据备份  (每年6月30日)   
  92.     年终备份        (每年12月31日)   
  93. [2] 对公:                           
  94.     季备份          (每季度21日)   
  95.     年终备份        (每年12月31日)  
  96. ====================================

  97. SPECIAL
  98.         echo ""1"表示储蓄,"2"表示对公,请选择:\c"
  99.         read input rest
  100.         case $input in
  101.         1)
  102.         id="cx"
  103.         dir=$cx_backup_dir;;
  104.         2)
  105.         id="dg"
  106.         dir=$dg_backup_dir;;
  107.         *)
  108.                 msg_box "放弃退出"
  109.                 return 1
  110.         esac
  111.         GetDate "要拷贝的备份数据的日期"
  112.         date1=`echo $date | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'`
  113.         date2=`echo $date | awk 'BEGIN { FS="/" }{printf("%s.%s.%s",$1,$2,$3)}'`  #转换为:YYYY.MM.DD
  114.                 BkupFile=$id"Data:"$date2
  115.          [ -f $dir/$BkupFile ] || {
  116.                                               msg_box "备份数据:$dir/$BkupFile 不存在"
  117.                                               return 1
  118.                                               }       
  119.           echo "正在复制备份数据:$BkupFile "
  120.     cp -f $dir/$BkupFile $MOUNT_POINT/special/$date1.$id
  121.                                                                                 [ $? -eq 0 ] || { msg_box "文件拷贝失败"
  122.                                                                                 return 1
  123.                                  }
  124. ###########################删除过期360天数据
  125. echo "\n正在清理过期备份数据。"
  126. find $MOUNT_POINT/special/ -name "????????.??" -mtime +360 -print -exec rm {} \;
  127. #########################################
  128. echo "备份成功 ! 按回车键继续...\c"  
  129. read any
  130. return 1               
  131. }

  132. ################
  133. ###############
  134. #自动安装软件
  135. #自动安装软盘制作方法:
  136. #1、在unix下,用tar cv6制作软盘。
  137. #2、软盘必须包括install文件。设为"可执行",内容为自动安装脚本。成功返回exit 0,失败返回exit 1
  138. #3、所有文件应放在/tmp/autoinst目录下面。
  139. autoinst()
  140. {
  141. change_to_dir /tmp/autoinst
  142. rm -r * >;/dev/null 2>;/dev/null
  143. ############################判断安装介质
  144.         echo "[1] 从软盘安装"
  145.         echo "[2] 从U 盘安装"
  146.         echo "[3] 从光盘安装"
  147.         echo "[4] 退出"
  148.         echo "请选择安装介质[1-4]:\c"
  149.                 read sel rest
  150.                 [ "$sel" ] || continue
  151.                 sel_long=`expr length $sel`
  152.                 [ $sel_long -eq 1 ] || continue
  153.                 [ $sel -lt 1 -o $sel -gt 4 ]&& break

  154.         case $sel in
  155.                 1)
  156.                 echo "请将软盘放入软驱,按任意键继续 \c"
  157.                 read any
  158.                 echo "正在拷贝软盘数据,请稍候……"
  159.                 tar xv6
  160.                 ;;
  161.                 2)
  162.                 #判断是否安装U盘
  163.                 mount_U || break
  164.                 [ -d "$MOUNT_POINT/autoinst" ] || {
  165.                 echo "没有安装程序,        任意键返回"
  166.                 read any
  167.                 unmount_U #卸载U盘
  168.                 return 1
  169.         }
  170.                 cp -r $MOUNT_POINT/autoinst/* ./
  171.                 ;;
  172.                 3)
  173.                 echo "请将光盘放入光驱,按任意键继续 \c"
  174.                 read any
  175.                 mount /dev/cd0 /mnt
  176.                 [ $? -eq 0 ] || { echo "光驱加载失败!!!按任意键继续\c"
  177.                                                                                  read any
  178.                                                                                  return 1
  179.                                                                                 }
  180.                 [ -d "/mnt/autoinst" -A -d "/mnt/AUTOINST" ] || {
  181.                 echo "没有安装程序,        任意键返回"
  182.                 read any
  183.                 umount /dev/cd0
  184.                 return 1
  185.         }
  186.                 if [ -d "/mnt/autoinst" ]
  187.                 then
  188.                 cp -r /mnt/autoinst/* ./       
  189.                 else
  190.                                                                                                                                 cp -r /mnt/AUTOINST/* ./ #由于光盘文件名都是大写       
  191.                                                                                                                                 for i in *
  192.                                                                                                                                 do
  193.                                                                                                                                 mv ${i} `echo ${i} | tr "[:upper:]" "[:lower:]"`  #转换所有大写为小写。
  194.                                                                                                                                 done
  195.                
  196.                 fi
  197.                 ;;
  198.                 4)
  199.                 echo "放弃安装退出,按任意键继续。\c"
  200.                 read any
  201.                 return 1
  202.         esac
  203.        
  204.         #判断拷贝结果。
  205.                          [ $? -eq 0 ] || { echo "文件拷贝失败!!!按任意键继续\c"
  206.                                                                                  read any
  207.                                                                                  [ $sel = 2 ] && unmount_U #卸载U盘
  208.                                                                                  [ $sel = 3 ] && umount /dev/cd0
  209.                                                                                  return 1
  210.                                                                                 }
  211.         #开始安装
  212.         cd /tmp/autoinst
  213.                 chmod +x ./install
  214.                 ./install
  215.                 #执行安装程序,获取返回值。成功返回0,失败返回1
  216.                           [ $? -eq 0 ] && {
  217.                                           echo "程序安装完成,按任意键继续 \c"
  218.                                           read any
  219.                                            [ $sel = 2 ] && unmount_U #卸载U盘
  220.                                            [ $sel = 3 ] && umount /dev/cd0
  221.                                                 return 1
  222.                                                  }       
  223.                         echo "程序安装失败,按任意键继续 \c"
  224.                         read any
  225.                          [ $sel = 2 ] && unmount_U #卸载U盘
  226.                          [ $sel = 3 ] && umount /dev/cd0
  227.                         return 1
  228. }
  229. ############33
  230. help_me()#帮助文档
  231. {
  232.         [ -f "./vmore" o -f "./help" ] || {
  233.                 echo "没有帮助文件,        任意键返回"
  234.                 read any
  235.                 return 1
  236.                                                 }
  237. clear
  238. echo ""
  239. echo ""
  240. echo "帮助文件操作指南:"       
  241. echo " ┌────────────────┐"
  242. echo " │ →: 左移一列       ←: 右移一列│"
  243. echo " │L/l: 左移一屏      R/r: 右移一屏│"
  244. echo " │END: 左移一屏     HOME: 右移一屏│"
  245. echo " │ ↑: 上移一行       ↓: 下移一行│"
  246. echo " │TAB: 左移八列      BKS: 右移八列│"
  247. echo " │ PD: 下翻一页       PU: 上翻一页│"
  248. echo " │CTRL_L: 重画屏幕    Q : 退出    │"
  249. echo " └────────────────┘"
  250. echo ""
  251. echo "按任意键进入即时帮助,请输入"q"退出帮助页面。 \c"
  252. read any
  253. ./vmore help
  254. }
  255. ###############3
  256. check_passwd()        {
  257.         stty -echo
  258.         cxsh=`dbaccess bankstar -<<-End 2>;/dev/null
  259.         select sh from cxs;
  260.         END`       
  261.         # 获得储蓄所号 ,设为密码。
  262.         passd=`echo $cxsh | awk '{print substr($0,4,7)}'`
  263.         echo "请输入管理员口令$passd:\c"
  264.        
  265.         read sel
  266.                         if        [ "$sel" -ne $passd ]
  267.                         then
  268.                         echo "\n口令错误,按任意键继续 \c"
  269.                         read any
  270.                         stty echo
  271.                         return 1
  272. else
  273.         echo "口令正确!\n\n"
  274.         stty echo
  275.            return 0
  276. fi
  277.         }
  278.         #=================================
  279.         check_passwd_new()        {
  280.         stty -echo
  281.         pass=`date '+%Y%m%d'` #将当前日期yyyymmdd设为动态的密码。
  282.         echo "请输入管理员口令:\c"
  283.                 read sel
  284.                         if        [ "$sel" -ne $pass ]
  285.                         then
  286.                         echo "\n口令错误,按任意键继续 \c"
  287.                         read any
  288.                         stty echo
  289.                         return 1
  290. else
  291.         echo "口令正确!\n\n"
  292.         stty echo
  293.            return 0
  294. fi
  295.         }
  296. ########################

  297. #=============================更改路径
  298. change_to_dir() {
  299.         dir=$1

  300.         [ -f $dir ] && rm -r $dir
  301.         [ ! -d $dir ] && mkdir $dir

  302.         cd $dir
  303. }
  304. #==============================end

  305. #==============================删除逾期数据
  306. DeleteYqData()
  307. {
  308.         Num=`ls $1/*.dat | wc -l`        
  309.         GeS=`expr $Num - $DAYS`
  310.         [ $GeS -gt 0 ] && {
  311.                 Num=0
  312.                 for i in `ls $1/*.dat`
  313.                 do
  314.                         Num=`expr $Num + 1`
  315.                         yes | rm $i >;/dev/null 2>;/dev/null
  316.                         [ $? -ne 0 ] && {
  317.                                 echo "\n$i 删除失败 !"
  318.                         }
  319.                         [ $Num -ge $GeS ] && break
  320.                 done
  321.         }
  322. }
  323. #=================================结束

  324. GetYN()
  325. {
  326.         while echo "\n$* (Y/N): \07\c"
  327.         do
  328.                 read yn
  329.                 case $yn in
  330.                 [yY]) return 0;;
  331.                 [nN]) return 1;;
  332.                    *) echo "\07\07"
  333.                 esac
  334.         done
  335. }
  336. #================================================
  337. DateAnalyse()
  338. {
  339.         value=`echo $1 | awk 'BEGIN { FS="/" }
  340.         {
  341.                 Year=$1
  342.                 Mon=$2
  343.                 Day=$3       
  344.                 if(Year<1899 || Year >;9999 || Mon<1 || Mon >;12 || \
  345.                    Day<1 || Day >;31 || !IsDigit(Mon) || !IsDigit(Year) ||\
  346.                    !IsDigit(Day) || !IsYMD(Year,Mon,Day))
  347.                         printf("1")
  348.                 else printf("0")

  349.         }
  350.         function IsDigit(str)
  351.         {
  352.                 for(i=1;i<=length(str);i++)
  353.                 {
  354.                         bit=substr(str,i,1)
  355.                         if(bit<0 || bit>;9) return(0)
  356.                 }
  357.                 return(1)
  358.         }
  359.         function IsLeapYear(YearNum)
  360.         {
  361.                 if((int(YearNum%4)==0 && int(YearNum%100)!=0)||int(YearNum%400)==0)
  362.                         return(1)
  363.                 else return(0)
  364.         }
  365.         function IsYMD(YearNum,MonNum,DayNum)
  366.         {
  367.                 DayArr["01"]=31
  368.                 if(IsLeapYear(YearNum)) DayArr["02"]=29
  369.                 else DayArr["02"]=28
  370.                 DayArr["03"]=31
  371.                 DayArr["04"]=30
  372.                 DayArr["05"]=31
  373.                 DayArr["06"]=30
  374.                 DayArr["07"]=31
  375.                 DayArr["08"]=31
  376.                 DayArr["09"]=30
  377.                 DayArr["10"]=31
  378.                 DayArr["11"]=30
  379.                 DayArr["12"]=31

  380.                 if(DayNum>;0 && DayNum<=DayArr[MonNum])
  381.                         return(1)
  382.                 else return(0)
  383.         }' `

  384.         return $value
  385. }
  386. #========================================
  387. GetDate()
  388. {
  389.         while true
  390.         do
  391.                 echo "\n请输入$* (yyyy/mm/dd): \c"
  392.                 read date
  393.                 len=`expr length "$date"`
  394.                 DateAnalyse $date
  395.                 [ $? -ne 0 -o $len -ne 10 ]  && {
  396.                         echo "\07\07\07"
  397.                         echo "日期错误,按回车键重新输入 ...\c"
  398.                         read key
  399.                         continue
  400.                 }
  401.                 GetDateYN "输入$*为:  $date , 是否正确"
  402.                 [ $? -eq 0 ] && break
  403.         done
  404. }
  405. #=============================================

  406. GetDateYN()
  407. {
  408.         while echo "\n\07\07$* (Y/N): \c"
  409.         do
  410.                 read yn
  411.                 len=`expr length "$yn"`
  412.                 [ $len -ne 1 ] && continue;
  413.                 case $yn in
  414.                 [yY]) return 0;;
  415.                 [nN]) return 1;;
  416.                    *) echo "\07\c";;
  417.                 esac
  418.         done
  419. }

  420. #=============================================程序主画面
  421. main_menu() {
  422.         tput clear
  423.         cat <<MYMENU
  424. 
  425. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  426. ┃        安庆市城郊信用合作联社业务数据U盘备份程序                   ┃
  427. ┃                                                                    ┃
  428. ┃  ==========================================================        ┃
  429. ┃   [1] 储蓄业务数据备份         [2] 储蓄业务数据恢复*               ┃
  430. ┃   [3] 对公业务数据备份         [4] 对公业务数据恢复*               ┃
  431. ┃   ---------------------------------------------------------        ┃
  432. ┃   [5] 查看U盘使用情况          [6] 删除U盘全部数据*                ┃
  433. ┃   [7] 选择删除U盘数据*         [8] 列 U 盘 内 容                   ┃
  434. ┃   [9] 特殊日备份数据拷贝       [0] 自动程序安装                    ┃
  435. ┃   ---------------------------------------------------------        ┃
  436. ┃   [m] 检查密码定期修改情况     [t] 修改系统时间                    ┃
  437. ┃   [q] 退           出          [h] 帮       助                     ┃
  438. ┃  ===========================================================       ┃
  439. ┃Version 1.2.1                                    zerozha@gmail.com  ┃
  440. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

  441. 日常备份数据保留$DAYS_U天,特殊日备份数据保留$DAYS_H天。过期数据,程序将自动删除。

  442. MYMENU
  443. #`date '+%Y年%m月%d日'`
  444. echo "请选择:\c";
  445. }
  446. #=============================================END
  447. check_privilege() {
  448.         id_num=`id -u `

  449.         if [ id_num -ne 0 ]
  450.         then
  451.                 echo "请用超级用户执行此程序!!!!"
  452.                 sleep 3
  453.                 exit        
  454.         fi
  455. }
  456. #============================================查看U盘使用情况
  457. usd_statistics() {
  458.         echo "请稍等……"
  459.         total=`df -kv $DEV |grep $DEV| awk '{print $3}'`
  460.         used=`df -kv $DEV |grep $DEV| awk '{print $4}'`
  461.         free=`df -kv $DEV |grep $DEV| awk '{print $5}'`
  462.         percent=`df -kv $DEV |grep $DEV|awk '{print $6}'`
  463.   echo "                               U 盘 当 前 使 用 情 况                    "
  464.         echo "     --------------------------------------------------------------------"
  465.         echo "     总容量(K)          已用(K)          剩余(K)          百分比"
  466.         echo  "      ${total}            ${used}            ${free}             ${percent}"
  467.   echo "     --------------------------------------------------------------------"
  468.         echo "     按回车键继续......\c"
  469.         read any
  470. }
  471. #============================================end

  472. #============================================删除U盘所有数据
  473. delete_all() {
  474.         echo "你确定要删除U盘所有数据吗?(y/n)\c"
  475.         cd $MOUNT_POINT
  476.         read opt
  477.         if [ $opt = "y" ]
  478.         then
  479.                 rm -rf *
  480.         fi
  481. }
  482. #============================================end

  483. #============================================选择删除U盘数据
  484. delete_single() {

  485. cd $MOUNT_POINT
  486.         echo "U盘当前目录:"
  487.         lx
  488.         echo "请输入要删除的目录或者完整文件路径:\c"
  489.         read delete_dir
  490.         if [ -d $delete_dir -o -f $delete_dir ]
  491.         then
  492.                 echo "你确定要删除${delete_dir}吗?(y/n)\c"
  493.                 read opt
  494.                 if [ $opt = "y" ]
  495.                 then
  496.                         rm -rf $delete_dir
  497.                 fi
  498.         else
  499.                 echo "<$delete_dir>;目录或文件不存在"
  500.                 sleep 2
  501.         fi

  502. }       
  503. #=========================================================
  504. list_file() {
  505.         #####
  506.         echo "[1] 储蓄业务"
  507.         echo "[2] 对公业务"
  508.         echo "[3] 特殊日备份"
  509.         echo "[4] 全部内容"
  510.         echo "请选择[1-4]:\c"
  511.                 read sel rest
  512.                 [ "$sel" ] || continue
  513.                 sel_long=`expr length $sel`
  514.                 [ $sel_long -eq 1 ] || continue
  515.                 [ $sel -lt 1 -o $sel -gt 4 ]&& break
  516.         #####

  517.         case $sel in
  518.                 1)
  519.         [ -d "$MOUNT_POINT/bankstar" ] || {
  520.                 echo "没有储蓄业务数据,        任意键返回"
  521.                 read any
  522.                 return 1
  523.         }
  524.         echo "U盘当前目录:$MOUNT_POINT/bankstar"
  525.         l $MOUNT_POINT/bankstar
  526.         echo "任意键返回"
  527.         read any
  528.                         ;;
  529.                 2)
  530.                 [ -d "$MOUNT_POINT/single" ] || {
  531.                 echo "没有对公业务数据,        任意键返回"
  532.                 read any
  533.                 return 1
  534.         }
  535.         echo "U盘当前目录:$MOUNT_POINT/single"
  536.         l $MOUNT_POINT/single
  537.         echo "任意键返回"
  538.         read any
  539.                         ;;
  540.                 3)
  541.                 [ -d "$MOUNT_POINT/special" ] || {
  542.                 echo "没有特殊日备份数据,        任意键返回"
  543.                 read any
  544.                 return 1
  545.         }
  546.         echo "U盘当前目录:$MOUNT_POINT/special"
  547.         l $MOUNT_POINT/special
  548.         echo "任意键返回"
  549.         read any
  550.                         ;;
  551.                 4)
  552.         echo "U盘当前目录:"
  553.         l $MOUNT_POINT
  554.         echo "任意键返回"
  555.         read any
  556.         esac
  557.         }

  558. ##############################
  559. new_bankstar()
  560. {
  561. cd $MOUNT_POINT
  562. change_to_dir bankstar

  563. backdate=`head -1 /usr/newbank/etc/cs | awk -F \| '{print $1}'`                #获得会计日期 YYYY/MM/DD
  564. date1=`echo $backdate | awk 'BEGIN { FS="/" }{printf("%s.%s.%s",$1,$2,$3)}'`  #转换为:YYYY.MM.DD
  565. date2=`echo $backdate | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'`  #转换为:YYYYMMDD
  566.                 ###
  567.                 [ -d $cx_backup_dir ] || {
  568.                                              echo "\n请先做硬盘备份,按任意键继续...\c"
  569.                                                read wait rest
  570.                                               return
  571.                                              }               
  572.                             [ -f $cx_backup_dir/cxData:$date1 ] || {
  573.                                               echo "\n请先做硬盘备份,按任意键继续...\c"
  574.                                                read wait rest
  575.                                               return
  576.                                              }               
  577.                 cd $cx_backup_dir
  578.                 echo "正在复制储蓄备份数据:{$backdate}"
  579.                 cp -f cxData:$date1 $MOUNT_POINT/bankstar/$date2.cx
  580.                                                                                 [ $? -eq 0 ] || { echo "文件拷贝失败!!!"
  581.                                                                                  sleep 3
  582.                                  return
  583.                                                                 }
  584.                                 
  585. ###########################删除过期30天数据
  586. echo "\n正在清理过期备份数据。"
  587. find $MOUNT_POINT/bankstar/ -name "????????.cx" -mtime +30 -print -exec rm {} \;
  588. #########################################
  589. echo "备份成功 ! 按回车键继续...\c"  
  590. read any
  591. }
  592.        

  593. recover_bankstar()
  594. {
  595.         GetDate "所恢复数据的日期"
  596.         Date=`echo $date | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'`
  597.         BkupFile="$Date.cx"
  598.         [ ! -f $MOUNT_POINT/bankstar/$BkupFile ] && {
  599.             echo "\n\07\07${date}无备份数据 ! 按回车键返回...\c"
  600.             read key
  601.             return 1;
  602.         }
  603.         cd /tmp
  604.         rm bankstar.Z 2>;/dev/null
  605.         cd $MOUNT_POINT/bankstar
  606.         [ -f "$Date.cx" ] || { echo "\n $Date.cx(数据)文件不存在!!!"
  607.                                 read key
  608.                                         return
  609.                                 }       
  610.         echo "正在拷贝数据"
  611.         cp $Date.cx /tmp/bankstar.Z
  612.         [ $? -eq 0 ] || { rm -r /tmp/bankstar.Z>;dev/null 2>;/dev/null
  613.                                 read key
  614.                         return
  615.                         }
  616.         cd /tmp
  617.         rm -r bankstar 1>;/dev/null 2>;/dev/null
  618.         uncompress bankstar.Z
  619.         [ $? -eq 0 ] || { rm -r bankstar.Z>;/dev/null 2>;/dev/null
  620.                                 read key
  621.                         return
  622.                         }
  623.         tar xvf bankstar
  624.         [ $? -eq 0 ] || { rm -r bankstar.Z  >;/dev/null 2>;/dev/null
  625.                           rm -r bankstar >;/dev/null 2>;/dev/null
  626.                         return
  627.                         }
  628.         dbaccess - -<<-End >;/dev/null 2>;/dev/null
  629.         drop database bankstar;
  630.         End
  631.         dbimport bankstar -l -i ./
  632.         flag=$?
  633.         while [ $flag -ne 0 ]
  634.         do
  635.                 GetYN "加载数据库失败 ! 是否重新加载数据库"  || return
  636.                 dbaccess - - <<-End
  637.                 drop database bankstar;
  638.                 End
  639.                 dbimport bankstar  -l -i ./
  640.                 flag=$?
  641.         done
  642.         echo "恢复成功 ! 按回车键返回...\c"
  643.         rm -r -f /tmp/bankstar.exp 2>;/dev/null
  644.         read key
  645.         return
  646. }

  647. #备份对公业务数据

  648. new_bankacc()
  649. {
  650.         cd $MOUNT_POINT
  651.         change_to_dir single
  652.         cszd=`dbaccess single -<<-End 2>;/dev/null
  653.         select rq from cszd;
  654.         End`
  655. cszd=`echo $cszd | awk '{print substr($0,4,10)}'`
  656. date1=`echo $cszd | awk 'BEGIN { FS="/" }{printf("%s.%s.%s",$1,$2,$3)}'`  #转换为:YYYY.MM.DD
  657. date2=`echo $cszd | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'`  #转换为:YYYYMMDD
  658.                 ###
  659.                 [ -d $dg_backup_dir ] || {
  660.                                              echo "\n请先做硬盘备份,按任意键继续...\c"
  661.                                                read wait rest
  662.                                               return
  663.                                              }               
  664.                             [ -f $dg_backup_dir/dgData:$date1 ] || {
  665.                                               echo "\n请先做硬盘备份,按任意键继续...\c"
  666.                                                read wait rest
  667.                                               return
  668.                                              }               
  669.                 cd $dg_backup_dir
  670.                 echo "正在复制对公业务备份数据:{$cszd}"
  671.                 cp -f dgData:$date1 $MOUNT_POINT/single/$date2.dg
  672.                                                                                 [ $? -eq 0 ] || { echo "文件拷贝失败!!!"
  673.                                  sleep 3
  674.                                  return
  675.                                 }
  676.                                 
  677. ###########################删除过期30天数据
  678. echo "\n正在清理过期备份数据。"
  679. find $MOUNT_POINT/single/ -name "????????.dg" -mtime +30 -print -exec rm {} \;
  680. #########################################
  681. echo "备份成功 ! 按回车键继续...\c"  
  682. read any       
  683.        
  684.        
  685. }

  686. #恢复对公业务数据
  687. recover_bankacc()
  688. {
  689.         GetDate "所恢复数据的日期"
  690.         Date=`echo $date | awk 'BEGIN { FS="/" }{printf("%s%s%s",$1,$2,$3)}'`
  691.         BkupFile="$Date.dg"
  692.         [ ! -f $MOUNT_POINT/single/$BkupFile ] && {
  693.             echo "\n\07\07${date}无备份数据 ! 按回车键返回...\c"
  694.             read key
  695.             return 1;
  696.         }
  697.         [ -d "/usr/tmp/backup/" ] || mkdir /usr/tmp/backup/
  698.         cd /usr/tmp/backup/
  699.         tar xvf $MOUNT_POINT/single/$BkupFile
  700.        
  701.         flag=$?
  702.         while [ $flag -ne 0 ]  
  703.         do
  704.                 GetYN "拷贝失败 ! 是否重新拷贝"  || return 1
  705.         done

  706.         yes | uncompress single.Z
  707.         flag=$?
  708.         while [ $flag -ne 0 ]  
  709.         do
  710.                 GetYN "解压缩失败 ! 是否重新解压缩"  || return 1
  711.                 uncompress single.Z
  712.                 flag=$?
  713.         done
  714.         tar xvf single
  715.         flag=$?
  716.         while [ $flag -ne 0 ]  
  717.         do
  718.                 GetYN "解数据包失败 ! 是否重新解数据包"  || return 1
  719.                 tar xvf single
  720.                 flag=$?
  721.         done

  722.         dbaccess - - <<-End
  723.         drop database single;
  724.         End
  725.         dbimport single  -l -i ./
  726.         flag=$?
  727.         while [ $flag -ne 0 ]
  728.         do
  729.                 GetYN "加载数据库失败 ! 是否重新加载数据库"  ||        return 1
  730.                 dbaccess - - <<-End
  731.                 drop database single;
  732.                 End
  733.                 dbimport single  -l -i ./
  734.                 flag=$?
  735.         done
  736.         echo "恢复成功 ! 按回车键返回...\c"
  737.         rm -f single
  738.         read key
  739.         return
  740.        
  741.         }


  742. ##主程序
  743. trap '' 2 3
  744. check_privilege  #检查权限
  745. while true  
  746. do
  747.         main_menu
  748.         read opt
  749.         case $opt in
  750.                 1)
  751.                         #储蓄数据备份
  752.                         mount_U && {
  753.                         new_bankstar
  754.                         unmount_U
  755.                 }
  756.                         ;;
  757.                 2)#储蓄数据恢复
  758.                         check_passwd_new &&        {
  759.                                 mount_U && {
  760.                                 recover_bankstar
  761.                                 unmount_U
  762.                         }
  763.                         }
  764.                         ;;
  765.                 3)
  766.                         #公存数据备份
  767.                         mount_U && {
  768.                         new_bankacc
  769.                         unmount_U
  770.                 }
  771.                         ;;
  772.                 4)#公存数据恢复
  773.                         check_passwd_new &&        {
  774.                                 mount_U && {
  775.                                 recover_bankacc
  776.                                 unmount_U
  777.                         }
  778.                         }
  779.                         ;;
  780.                 5)#U盘使用情况
  781.                         mount_U && {
  782.                         usd_statistics
  783.                         unmount_U
  784.                         }
  785.                         ;;
  786.                 6)#删除U盘全部内容
  787.                 check_passwd_new &&        {
  788.                         mount_U && {
  789.                         delete_all
  790.                         unmount_U
  791.                 }
  792.                 }
  793.                         ;;
  794.                 7)#删除U盘部分内容
  795.                 check_passwd_new && {
  796.                         mount_U &&        {delete_single
  797.                         unmount_U}
  798.                         }

  799.                         ;;
  800.                 8)#列U盘内容
  801.                         mount_U && {
  802.                         list_file
  803.                         unmount_U
  804.                         }
  805.                         ;;
  806.                 9)#特殊备份拷贝
  807.                         mount_U && {
  808.                         copy_special
  809.                         unmount_U
  810.                 }
  811.                 ;;
  812.                 0)#自动安装
  813.                         autoinst
  814.                         ;;
  815.                        
  816.                 h)#帮助文档
  817.                         help_me
  818.                         ;;
  819.                 m)#密码检查
  820.                         ./mm
  821.                         ;;
  822.                 t)
  823.                 change_time
  824.                 ;;
  825.                 q)
  826.                         exit

  827.         esac
  828. done
复制代码

SCO Unix 5.05.JPG (51.1 KB, 下载次数: 47)

屏幕截图

屏幕截图

usb.jpg

175.42 KB, 下载次数: 64

请改为usb.rar

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-09-22 14:47 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

谢谢!

论坛徽章:
0
3 [报告]
发表于 2004-09-22 15:01 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

谢谢!!!

论坛徽章:
0
4 [报告]
发表于 2004-09-22 16:52 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

你实在是太努力!!!!
精神可佳!!

论坛徽章:
0
5 [报告]
发表于 2004-09-22 17:02 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

顶!

论坛徽章:
0
6 [报告]
发表于 2004-09-22 19:13 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

我估计自己要得“心理枯竭”了。

迟早有一天会累死。

论坛徽章:
0
7 [报告]
发表于 2004-09-22 20:19 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

真是好心人啊

论坛徽章:
0
8 [报告]
发表于 2004-09-22 23:34 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

相当不错的东东,谢谢共享了,给你设为原创精华了。

论坛徽章:
1
15-16赛季CBA联赛之北控
日期:2022-03-04 22:35:50
9 [报告]
发表于 2004-09-23 07:50 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

不好意思,我也放到下载中了。

论坛徽章:
0
10 [报告]
发表于 2004-09-23 08:35 |只看该作者

U盘备份shell 1.2.1版for中创。与大家分享。

老查:我怎么保存不了呀。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP