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之后