zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    运算符
    javaScript注意事项
    初识JavaScript.
    tomee.xml
    setenv.bat
    catalina.properties
    tomee 系列问题
    tomee 第一个 远程调用 Message-driven bean(MDB)
    tomee 第一个 远程调用 Session Bean
    Java EE 参考文档及sample
  • 原文地址:https://www.cnblogs.com/liangjichen/p/4700896.html
Copyright © 2011-2022 走看看