linux目录时间转换,Shell日期时间和时间戳的转换

Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.tar

所以查找了下Shell里时间转换的方法,记录如下备忘。

Linux下时间转换的一些命令:date +%s 可以得到UNIX的时间戳;

用shell将日期时间与时间戳互转:

date -d '2015-08-04 00:00:00' +%s输出:1438617600而时间戳转换为字符串可以这样做:

date -d @1438617600 '+%Y-%m-%d' 输出:2015-08-04如果需要得到指定日期的前后几天:seconds=`date -d '2015-08-04 00:00:00' +%s` #得到时间戳

seconds_new=`expr $seconds + 86400` #加上一天的秒数86400

date_new=`date -d @$seconds_new '+%Y-%m-%d'` #获得指定日前加上一天的日前

修改gitlab备份文件名的脚本:

#!/bin/bash

backup_path=${1-.}

echo Specified Gitlab backup path is : $backup_path

for i in `find $backup_path -mtime 0 -iregex '^.*1[0-9]+_gitlab_backup.tar$' -exec basename {} \;`

do

time_stamp=`echo $i | cut -d'_' -f1`

new_name=`date -d @$time_stamp '+%Y-%m-%d'`

new_file=${new_name}_gitlab_backup.tar

mv $backup_path/$i $backup_path/$new_file

echo Moved backup file from name $i to $new_file

done正则表达式时间戳以1开头,可以匹配到2033年,够用。

脚本执行放入crontab,在gitlab backup之后

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

0 4 * * * /bin/bash /data/gitlab/backups/refine.sh /data/gitlab/backups >> /data/gitlab/backups/cron.log 2>&1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值