您的位置:首页 > 运维架构 > Shell

shell脚本,根据时间范围压缩时间目录成一个文件

2015-05-21 17:59 405 查看
Linux服务器下存放文件目录是通过日期(yyyyMMdd)创建的,现在要根据一个日期范围(yyyy-MM-dd)把多个目录压缩成一个文件。

#!/bin/sh

#通过参数把子目录、时间起始范围传进来

#子目录

adudid=${1}

#开始时间,如2015-05-19

daybegin=${2}

#结束时间,如2015-05-20

dayend=${3}

sourceFolder='/mnt/programs/resource/screenimg/'

targetFolder='/mnt/programs/resource/screenimg/'

#一天的秒数

dayms=$[24*60*60]

echo "dayms ${dayms}"

#将时间换成yyyy-MM-dd HH:mm:ss格式

daybeginms=`date -d "${daybegin} 00:00:00" +%s`

dayendms=`date -d "${dayend} 00:00:00" +%s`

sourceZipFolder=${sourceFolder}${adudid}'/'`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`

#这个应该写成无限循环

for ((i=0;i<500;i++));

do

echo ${daybeginms} 'compare to' ${dayendms}

#比较时间

if [ ${daybeginms} -eq ${dayendms} ]; then break

else

daybeginms=$[${daybeginms} + ${dayms}]

sourceZipFolder="${sourceZipFolder} ${sourceFolder}${adudid}/`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`"

fi

echo ${daybeginms} 'compare result' ${dayendms}

done

echo ${sourceZipFolder}

#压缩文件的名称

filename=${adudid}'_'`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`'_'`date -d "1970-01-01 UTC ${dayendms} seconds" +%Y%m%d`'.tar'

#拼接的命令

cmdstr="tar -cf ${targetFolder}${filename} ${sourceZipFolder}"

echo ${cmdstr}

`${cmdstr}`

总结:

刚开始也是各种不会,还好可以在网上查询到相关文章。

1、shell时间(字符串和时间戳转换)

在shell中,字符串转换为时间戳可以这样做:

date -d "2010-10-18 00:00:00" +%s

输出形如:

1287331200

其中,-d参数表示显示指定的字符串所表示的时间,+%s表示输出时间戳。

而时间戳转换为字符串可以这样做:

date -d @1287331200

输出形如:

Mon Oct 18 00:00:00 CST 2010

文章来源:http://www.codelast.com/

如果要转换成“2010-10-18 00:00:00”这种形式的时间戳,则这样做:

date -d "1970-01-01 UTC 1287331200 seconds" "+%F %T"

输出形如:

2010-10-18 00:00:10

再多废话一句,如果只要输出日期,不要时间,则去掉 %T 就可以了:

date -d "1970-01-01 UTC 1287331200 seconds" +%F

输出形如:

2010-10-18

转自:http://blog.csdn.net/taijianyu/article/details/6907278

在xshell终端输入“date --help”,可以看到date命令的其它介绍,如果要把秒转换成yyyyMMdd格式,可以:date -d "1970-01-01 UTC 1287331200 seconds" +%Y%m%d

2、for循环,if使用,数字比较大小等

转自:http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
http://bbs.chinaunix.net/thread-563864-1-1.html http://www.jb51.net/article/34332.htm http://blog.sina.com.cn/s/blog_7ec3252d01013l2w.html
需要注意的是for循环后面是双括号,而且要与for关键字保持一个空格的距离;if也是要与后面的[ ... ]保持距离,而且[]还要与里面的内容保持一个空格的距离。

3、数字的运算,比如加减乘除什么的
http://blog.csdn.net/taijianyu/article/details/6907288
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐