码迷,mamicode.com
首页 > 其他好文 > 详细

shell脚本—根据文件个数定时备份

时间:2014-06-27 22:52:18      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   文件   2014   

      最近在了解Jenkins时,出现这样一个问题:linux ext3系统目录下的子目录个数不能超过31998个(参考:http://www.xshell.net/linux/1267.html),但jenkins在不停的编译版本时,有时候几个小时就创建了30000多个日志文件夹的目录,从而要随时的清理此文件夹下的目录。于是就写了个脚本来实现自动备份功能。由于很久没有接触过shell,所以花了一天来实现,比较汗颜!主要是对shell的格式,语法之类的不是很了解,在网上找了些资料,边写边调试!废话不多说了,直接上脚本!

 1 #!/bin/bash
 2 ###############################
 3 #FileName:backupLogTimer.sh
 4 #Function:定时备份日志文件
 5 #Version:0.1
 6 #Authon:xueya
 7 #Date:2014.06.26
 8 ###############################
 9 #获取当前路径
10 path=`pwd`
11 echo "current1 path :${path}"
12 #循环执行
13 while [[ 1 -eq 1 ]]
14 do
15    #查看文件夹下的文件
16    fileList=`ls 2>/dev/null`
17    #遍历此文件夹下的文件
18    for pFile in $fileList
19    do
20        echo "current path: ${path}/${pFile}"
21        #判断是否属于文件夹
22        if [[ -d "${pFile}" ]];then
23           #计算文件夹数量
24           num=`ls -l ./tmp|grep "^d"|wc -l`
25           #判断文件数是否超过了20000
26           if [[ ${num} -gt 5 ]];then
27               #获取当前时间
28               currentTime=`date +%Y%m%d%H%M%S`
29               #定义压缩文件名称
30               tarFileName="/home/hubin/backup/${pFile}_${currentTime}.tar.gz"
31               #压缩文件
32               echo "backup files to $tarFileName"
33               tar -zcvf ${tarFileName} `find ${path}/${pFile} -mmin +60 -type d` --remove-files
34           fi
35        fi
36    done
37    #等待1小时
38    sleep 600
39 done

值得注意的几个点:

1. 首行需以#!开头,告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序

2. 对于变量的取值。取值的时候要在变量名前加$

3. 在""中显示变量时,最好能加上{},如${tarFileName},防止和后面的字符拼接到一起,出现混淆,系统识别不出变量名

4. 注意条件测试部分中的空格。在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。如if

5. 定义变量时,=两侧不要有空格

6. 当变量中包含shell指令时,需要用``,是!旁边的那个。

 

     

 

shell脚本—根据文件个数定时备份,布布扣,bubuko.com

shell脚本—根据文件个数定时备份

标签:style   blog   http   color   文件   2014   

原文地址:http://www.cnblogs.com/tianyaxue/p/3811074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!