免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: GM
打印 上一主题 下一主题

红袖添香:续问.......!!!!! [复制链接]

论坛徽章:
0
131 [报告]
发表于 2003-04-14 11:11 |只看该作者

红袖添香:续问.......!!!!!

哈哈,看GM这长长的9页都累,可不可以换个贴子?

论坛徽章:
0
132 [报告]
发表于 2003-04-17 17:34 |只看该作者

红袖添香:续问.......!!!!!

你要是时时关心这个论坛,也时刻关注我向红袖姐请教的问题的话,就不会象你说的这么累了,反而从我们这儿能得到更多的知识,不信的话你有空慢慢地从头看起,会受益非浅的,因为这里有红袖很多的知识。其实这个贴子早被评为精华了,我也不知是何原因!!!,我希望有更多的朋友加入我们的讨论,为我也解答难题,谢谢!!!!

论坛徽章:
0
133 [报告]
发表于 2003-05-13 07:10 |只看该作者

红袖添香:续问.......!!!!!

原帖由 "GM" 发表:
红袖好:
原来你没有磁带机,但我可以把磁带拷出来的信息给你以便你可以帮我分析分析:
首先我的系统是AIX
我的拷带命令是这样的:
tar -cvf /dev/rmt0 /bak
它在幕屏出现信息:
a /bak/文件1 230 blocks.
a ..........


这个帖了很老了,又翻出来了,不好意思,不过这是我欠着的。 开学后就没有很多时间泡在这里了,很抱歉。

我都快忘记当时的问题了,好象当是我是这样的想法,你需要自己融合一下这个进度条和你的备份脚本,直接调用是有困难的,就是因为它们天生不是一体的,很难正确判断进行的程度。

在这里是先得到文件列表,然后分成80份作追加备份,当然这个方法并不是很好,有时也可能会不准,可能还需自己调整一下,另外,这个 split 的用法在各系统中还可能会有不一样,不见得都能用。我只测试过在 solaris 下可以运行。

  1. abort() {
  2.   printf "\033[m\n"
  3.   exit
  4. }

  5. idle() {
  6.   i=1
  7.   sum=`date +%S`
  8.   sum=`expr $sum \* $sum | cut -b 1`
  9.   sum=`expr $sum \* 10`
  10.   while [ $i -le $sum ]; do
  11.     i=`expr $i + 2 `
  12.     trap abort 2
  13.   done
  14. }

  15. backup() {

  16.     if [ ! -f list ]; then
  17.       find $1 -type f > list 2> /dev/null
  18.       lines=`cat list | wc -l`
  19.       numb=`expr $lines / 80 + 1`

  20.       split -l$numb list
  21.     fi

  22.     file=`ls x?? 2> /dev/null | head -1 `
  23.     if [ x"$file" != x ]; then
  24.        if [ ! -e $2 ]; then
  25.          tar cvf $2 -I $file >/dev/null 2>&1
  26.        else
  27.          tar uvf $2 -I $file >/dev/null 2>&1
  28.        fi
  29.        rm -f $file 2> /dev/null
  30.     fi

  31. }

  32. proc() {
  33.   begin=$1
  34.   end=$2
  35.   row=$3
  36.   pos1=`expr $begin + 1`
  37.   pos2=`expr $end - 1`
  38.   mid=`echo "($begin+$end)/2-2" |bc`

  39.   printf "\033[2J"
  40.   printf "\033[${row};${begin}H["
  41.   printf "\033[${row};${end}H]"
  42.   while [ $pos1 -le $pos2 ]; do
  43.     pro=`echo "scale=0; ($pos1 - $begin)*100/($pos2-$begin)" | bc`
  44.     if [ $pos1 -gt $mid ]; then
  45.       printf "\033[7m\033[${row};${mid}H$pro%%\033[${row};${pos1}H:"
  46.     else
  47.       printf "\033[m\033[${row};${mid}H$pro%%\033[7m\033[${row};${pos1}H:"
  48.     fi
  49.     pos1=`expr $pos1 + 1`
  50.     backup $4 $5
  51.     trap abort 2
  52.   done
  53.   printf "\033[m\n"
  54.   echo "done"
  55. }

  56. rm -f $2 list

  57. # printf "### proc 1 80 10 ### hit ENTER to continue "
  58. # if read a; then
  59.   proc 1 80 10 $1 $2
  60. # fi

  61. rm -f list
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
134 [报告]
发表于 2003-05-13 14:10 |只看该作者

红袖添香:续问.......!!!!!

这个帖子太经典了!

置顶吧,让大家都学习一下!

论坛徽章:
0
135 [报告]
发表于 2003-05-19 10:09 |只看该作者

红袖添香:续问.......!!!!!

我试一下,到底能不能置顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP