shell脚本—根据文件个数定时备份(转载)

#!/bin/bash
###############################
#FileName:backupLogTimer.sh
#Function:定时备份日志文件
#Version:0.1
#Authon:xueya
#Date:2014.06.26
###############################
#获取当前路径
path=`pwd`
echo "current1 path :${path}"
#循环执行
while [[ 1 -eq 1 ]]
do
   #查看文件夹下的文件
   fileList=`ls 2>/dev/null`
   #遍历此文件夹下的文件
   for pFile in $fileList
   do
       echo "current path: ${path}/${pFile}"
       #判断是否属于文件夹
       if [[ -d "${pFile}" ]];then
          #计算文件夹数量
          num=`ls -l ./tmp|grep "^d"|wc -l`
          #判断文件数是否超过了20000
          if [[ ${num} -gt 5 ]];then
              #获取当前时间
              currentTime=`date +%Y%m%d%H%M%S`
              #定义压缩文件名称
              tarFileName="/home/hubin/backup/${pFile}_${currentTime}.tar.gz"
              #压缩文件
              echo "backup files to $tarFileName"
              tar -zcvf ${tarFileName} `find ${path}/${pFile} -mmin +60 -type d` --remove-files
          fi
       fi
   done
   #等待1小时
   sleep 600
done

值得注意的几个点:

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

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

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

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

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

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

posted on 2016-09-18 23:33  东炫元芳  阅读(323)  评论(1编辑  收藏  举报