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
Shell日期时间和时间戳的转换的更多相关文章
- mysql小知识点汇总---(时间与时间戳的转换, 修改mysql用户名密码, navicate 导入sql文件报错 1153)
1. 时间与时间戳的转换 1.1 时间戳转时间 FROM_UNIXTIME(add_time, '%Y-%m-%d') 1.2 时间转时间戳 UNIX_TIMESTAMP('2015-04-29') ...
- js 时间与时间戳的转换
一:时间转时间戳:javascript获得时间戳的方法有四种,都是通过实例化时间对象 new Date() 来进一步获取当前的时间戳 1.var timestamp1 = Date.parse(n ...
- sql server 日期时间与字符串的转换
一.sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基 ...
- javascript 时间与时间戳的转换
一:时间转时间戳:javascript获得时间戳的方法有五种,都是通过实例化时间对象 new Date() 来进一步获取当前的时间戳 1.var timestamp1 = Date.parse(new ...
- python 时间和时间戳的转换
对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块,具体的操作有如下的几种: 将时间转换 ...
- .NET / C# 时间与时间戳的转换
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数. 我们在计算时间戳时应为1970年01月01日到指定时间. 应当注 ...
- Python时间和时间戳互相转换
# 将时间变成时间戳 def tranftimestamp(stringtime): try: return time.mktime(time.strptime(stringtime, "% ...
- 在C#中进行时间和时间戳的转换
一.时间转换为 毫秒时间戳 由于 UTC 和 中国时区有时间差, 所以我们在时间转换为时间戳的时候, 我们需要多减去8个小时的时区差. // 时间转换为 毫秒时间戳 public static dou ...
- JS时间和时间戳的转换
时间转为时间戳 timeToTimestamp(time){ let timestamp = Date.parse(time) return timestamp; } 时间戳转为本地时间 timest ...
随机推荐
- about the pageload and page init event
Page_Init The Page_Init event is the first to occur when an ASP.NET page is executed. This is where ...
- angularjs2 学习笔记(二) 组件
angular2 组件 首先了解angular2 组件的含义 angular2的应用就是一系列组件的集合 我们需要创建可复用的组件供多个组件重复使用 组件是嵌套的,实际应用中组件是相互嵌套使用的 组件 ...
- golang:slice陷阱
slice陷阱,slice底层指向某个array,在赋值后容易导致array长期被引用而无法释放
- Linux 删除mysql数据库失败的解决方法
使用命令:drop database xxx:删除本数据库时却删除失败,系统提示出现了错误,错误代码为: ERROR 1010 (HY000): Error dropping database(can ...
- 有关ZxMiddleTier构想
终于决定动手写一个自己的东西,没有其它想法,人已经30多了,感觉原来学的东西都是零散的,想通过这样一个中间层的项目,串联起原来所学的东西,形成一个体系,也算是对自己这么多年的程序员的生涯做出一个交代, ...
- responsive menu
http://responsive-nav.com/#instructions https://github.com/viljamis/responsive-nav.js http://tympanu ...
- cocos2dx中的场景和使用方法
1.一个游戏中有且只有一个导演,但是至少有一个场景 2.场景是游戏元素节点数的根节点,也可以理解为该场景下的渲染树的根节点 3.场景是一个容器,包含了该场景下的所有游戏元素,比如层,精灵 4.场景是导 ...
- Daily Scrum3
今天我们小组开会内容分为以下部分: part 1: 汇报之前分配的任务进度: part 2:分配明天的任务. ◆Part 1 组员进度报告 彭佟小组完成的优化目标: 关于软件防滥用及垃圾信息拦 ...
- [原创] zabbix学习之旅五:如何快速搭建一个报警系统
通过之前的文章,我们已搭建好zabbix server.agent和mail客户端,现在万事俱备,只差在server的界面中进行相应配置,即可快速搭建一个报警系统.总的来说,快速搭建一个报警系统的顺序 ...
- C3P0连接池详解及配置
C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...