清理目录脚本

编写一个目录清理脚本。要求,用 -d 选项 标示 需要清理的目录,  用 -c 选项 标示 目录下保留的文件数量。 超出该数量的话,把较老的文件打包 压缩,备份到其他目录下。


点击(此处)折叠或打开

  1. #!/bin/bash

  2. if [ $1 = \'-c\' ] && [[ $2 =~ \"^[1-9][0-9]*$\" ]] ; then                                  # 判定是参数1 是否 是选项 -c  并且 参数2 是否是纯数字 (用 正则表达式判断)
  3.    f_cnt=$2                                                                                        # 如果满足上面的条件的话, 把 参数2 当做 保留的文件数量
  4. elif [ $1 = \'-d\' ] && [ -d $2 ]; then                                                     # 如果参数1 是 选项 -d  并且 参数2 是个目录的话
  5.    f_dir=$2                                                                                        #  如果满足上面的条件的话, 把 参数2 当做 要清理的目录
  6. else
  7.    echo \"invaild option\"
  8. fi


  9. if [ $3 = \'-c\' ] && [[ $4 =~ \"^[1-9][0-9]*$\" ]] ; then                                   # 这一部分 跟 上一段代码类似。 意思是 -c  -d 选项 的前后次序 无所谓。
  10.    f_cnt=$4
  11. elif [ $3 = \'-d\' ] && [ -d $4 ]; then
  12.    f_dir=$4
  13. else
  14.    echo \"invaild option\"
  15. fi

  16. if [ $f_cnt ]; then
  17.    echo \"file count : \" $f_cnt
  18. fi


  19. if [ $f_dir ]; then
  20.    echo \"file direction : \" $f_dir
  21. fi

  22. fi


  23. if [ $f_cnt ] && [ $f_dir ]; then

  24. let t_cnt=\"`ls -l $f_dir/ | wc -l` - 1\"
  25. echo $f_cnt

  26. if [ $t_cnt -gt $f_cnt ]; then

  27. echo \'old archive log\'
  28. let d_cnt=\"$t_cnt - $f_cnt\"                                                                     # 计算出 需要清理的文件的个数
  29. echo \"$d_cnt files need clear\"

  30. ls -ltr $f_dir/ | awk \'{ print $9 }\' | head -`expr $d_cnt + 1` | tail -$d_cnt > f.list          # 按修改时间排序,把需要清理的老文件 存到 f.list 列表中

  31. date_dir=`date +%y_%m_%d`
  32. mkdir -p /u02/backup/arch/$date_dir
  33. for i in `cat f.list`
  34. do
  35.   echo $f_dir/$i
  36.   mv $f_dir/$i /u02/backup/arch/$date_dir/                                                         # 把待清理的文件 移动其他目录下 (该目录 带有当前日期)
  37. done

  38. cd /u02/backup/arch/
  39. tar -cvf $date_dir.tar $date_dir                                                                   # 对清理的文件 打包压缩
  40. gzip $date_dir.tar
  41. rm -rf /u02/backup/arch/$date_dir
  42. echo \"$d_cnt file cheaned\"

  43. else
  44.    echo \'less euqal $f_cnt files\'
  45. fi

  46. fi

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12238525/viewspace-1243407/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12238525/viewspace-1243407/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值