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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论