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

最近在了解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

时间: 2024-10-21 19:32:53

shell脚本—根据文件个数定时备份的相关文章

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

使用shell脚本清空文件

使用shell脚本清空文件 在最近的项目中,会生成很多日志文件,所以需要写一个脚本来手动清空它们,下面提供几种典型方法. 方法1 代码 #!/bin/bash ##方法1 echo "" > $1 echo "$1 cleaned up." 运行截图 说明 我想大家应该注意到了文件其实并没有真正被清空,而是有一个空行. 方法2 代码 #!/bin/bash ##方法2 : > $1 echo "$1 cleaned up." 运行截图

(转)shell脚本之文件测试操作符及整数比较符

shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一下的文件测试操作符. 更多的参数可以help test或者man bash 二.字符串测试操作符: 字符串测试操作符的作用:比较两个字符串是否相同.字符长度是否为0,字符串是否为null(注:bash区分长度字符串和空字符串) "="比较两个字符串是否相同,与"=="等

Shell脚本实现每个工作日定时执行指定程序

我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序.那么有没有办法实现这一功能呢?答案是肯定的.我们可以运用Shell脚本简单实现这一功能. 原理很简单,Shell脚本内部每隔1秒查询一次当前时间.日期以及星期数,当检测到当前星期数week非0或6(0代表星期天,6代表星期六)且时间curTime大于指定时间startTime时,执行指定的程序program.为了保证每天仅执行一次指定程序program,还引用了变量isFirstTime做标记.具体代码如下: 1 #

shell脚本复制文件夹内容到另外的文件夹,如果存在则自动备份

有时我们需要将一个文件夹覆盖到我们的工作目录,但需要自动备份已经存在的文件,一个一个去备份太麻烦了,全部备份又没有必要.shell脚本可以很好滴完成这个任务.原文链接http://back.zhizhi123.com/?p=85 #!/bin/sh upload_dir=/alidata/www/sh/useful-shell-script/upload/ www_dir=/alidata/www/sh/useful-shell-script/www/ backexist() { filelis

通过shell脚本实现对oracle RMAN备份集压缩并异地备份

1.背景说明 公司磁带库坏了..每天oracle的备份往哪里放? 2.备份方式重新规划 原备份方式 现备份方式 3.备份脚本分享 小白写了一个备份的shell脚本,分享出来 #!/bin/bash # tar oraclebackup file   # check RMAN is run? #我做RMAN备份的时候都会创建一个RMAN日志,所以此日志就可以判断我的RMAN是否执行了 filename="/mnt/rman/log/RmanBackup_`date +%y%m%d`.log&quo

Shell脚本与文件的执行

1.Shell脚本程序 Shell是操作系统的"外壳",Shell为用户提供操作计算机的人机交互接口.用户对计算机的所有操作以及计算机所获得数据都是由Shell管理的. Shell 一般分2类:(1).图形Shell (2)文字Shell:Shell在操作系统上面只是一个普通的应用程序,无论其形式多么复杂,可以随需要被随时替换. 我们编程研究的是文字Shell : 命令行式, 用户登录Linux系统时,就会开启一个Shell进程为该用户提供人机交互服务:用户就可以将命令提供给Shell

利用shell脚本统计文件中出现次数最多的IP

比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可以利用以下shell脚本: cat test.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1 [原创]统计IP次数最多的 一条还是很常见,很实用,很简单的命令 netstat -ntu Active Internet

Shell脚本实现文件遍历和删除操作

本文需要实现的功能如下:某文件夹下具有由按数字编号命名的文件夹,需要删除除最大编码外的文件. 具体实现 大致思路:循环遍历该文件夹下所有文件,正则匹配出最大编码文件:然后循环文件,删除除最大编码外的文件. 实现代码如下: #!/bin/bash function getdir(){ max=0 DATEPATTERN="^[0-9]*$" for element in `ls $1` do if [[ "$element" =~ $DATEPATTERN ]] th