Linux tar命令解压时提示时间戳异常的处理办法
在Linux服务器上的文件会有3个时间戳信息 访问时间(Access)、修改时间(Modify)、改变时间(Change),都是存放在该文件的Inode里面
问题描述:
公司网站是前后端分离的,所有的静态页面全部都需要单独部署,使用的是云服务。部署方式是通过 jenkins 从指定的 SVN 地址把 前端静态页面检出到 jenkins服务器,且每次检出的代码前都会把上一次的全部删除掉,也就是在检出代码的时候所有的文件都是重新创建的,时间戳每次都是当前系统的时间;由于公司出口带宽比较小,为了提高传输效率,会在Jenkins服务器上先把源代码(tar)压缩后再上传到云服务器解压后部署。再部署的过程中从Jenkins控制台看到在云服务器对代码解压缩的时候提示 “tar: xxx: time stamp 2017-09-03 08:32:34 is 444.030325759 s in the future” 大概意思就是文件的时间戳信息异常
问题分析:
tar命令在打包文件的时候会包含文件的所有属性,如时间戳、文件名、大小等等,根据 tar 命令报错的信息,tar命令在解压提取原来文件时间戳准备创建文件的时候遇到 Jenkins服务器时间 比 云服务器时间要新(in the future),就报了上面的错误。
解决办法:
方案一:
1、所有服务器 用定时任务每个几分钟就同步同一个国内公开时间服务器(ntp1.aliyun.com 国内阿里云的,或其他的都行),或者直接搭建时间同步服务器(NTP)
方案二:(推荐)
2、tar命令在解压的时候加上 -m 参数,作用是不提取压缩包里文件的修改时间,以当前系统时间为准创建时间戳。
提示:所有服务器时间应该需要一致的,不然其他服务也有可能出现时间的问题。最好是这2种方案都使用。
报错复现:
[root@localhost home]# date
Sun Sep :: CST
[root@localhost home]# touch {..}.log
[root@localhost home]# ll
total
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
[root@localhost home]# tar zcf home.tar.gz *
[root@localhost home]# rm -f *.log
[root@localhost home]# date -s "20170903 08:25:00"
Sun Sep :: CST
[root@localhost home]# tar xf home.tar.gz
tar: .log: time stamp -- :: is 444.030325759 s in the future
tar: .log: time stamp -- :: is 444.029975178 s in the future
tar: .log: time stamp -- :: is 444.029878161 s in the future
tar: .log: time stamp -- :: is 444.029821403 s in the future
tar: .log: time stamp -- :: is 444.029553439 s in the future
[root@localhost home]# ll
total
-rw-r--r--. root root Sep .log # 虽然时间戳有问题,但还是解压了,不确定会不会有其他问题
-rw-r--r--. root root Sep .log
-rw-r--r--. root root Sep .log
-rw-r--r--. root root Sep .log
-rw-r--r--. root root Sep .log
-rw-r--r--. root root Sep home.tar.gz
[root@localhost home]# stat .log
File: `.log'
Size: Blocks: IO Block: regular empty file
Device: 802h/2050d Inode: Links:
Access: (/-rw-r--r--) Uid: ( / root) Gid: ( / root)
Access: -- ::09.967538065 +
Modify: -- ::34.000000000 +
Change: -- ::09.967999958 +
[root@localhost home]# rm -f *.log
[root@localhost home]# ll
total
-rw-r--r--. root root Sep home.tar.gz
[root@localhost home]# tar mxf home.tar.gz # 加上 -m 参数后没有报错,且时间是当前系统时间
[root@localhost home]# ll
total
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep : .log
-rw-r--r--. root root Sep home.tar.gz
[root@localhost home]# stat .log
File: `.log'
Size: Blocks: IO Block: regular empty file
Device: 802h/2050d Inode: Links:
Access: (/-rw-r--r--) Uid: ( / root) Gid: ( / root)
Access: -- ::05.388000347 +
Modify: -- ::05.388000347 +
Change: -- ::05.388000347 +
[root@localhost home]# tar --help|fgrep 'touch'
-m, --touch don't extract file modified time
Linux tar命令解压时提示时间戳异常的处理办法的更多相关文章
- tar命令解压时如何去除目录结构及其解压到指定目录 (--strip-components N)
去除目录结构加上 --strip-components N 如: 压缩文件eg.tar 中文件信息为 src/src/src/eg.txt 运行 tar -xvf eg.tar --strip-com ...
- [转载] linux下tar命令解压到指定的目录
参考 http://blog.sina.com.cn/s/blog_62449fcf0100nfar.html linux下tar命令解压到指定的目录 : #tar zxvf /bbs.tar.z ...
- linux下tar命令解压到指定的目录
linux下tar命令解压到指定的目录 : #tar zxvf xx.tar.gz -C /xx//把根目录下的xx.tar.gz解压到/xx/下,前提要保证存在/xx这个目录 这个和cp命令有点不同 ...
- 使用tar命令解压的时候报错not in gzip format
使用tar命令解压一个xx.tar.gz压缩包的时候报错not in gzip format,后用file xx.tar.gz查看一下格式发现是html document text格式的...
- linux tar文件解压
把常用的tar解压命令总结下,当作备忘: tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个, ...
- tar命令-解压和压缩文件
tar命令 可以用来压缩打包单文件.多个文件.单个目录.多个目录. Linux打包命令_tar tar命令可以用来压缩打包单文件.多个文件.单个目录.多个目录. 常用格式: 单个文件压缩打包 tar ...
- tar命令: 解压到指定的目录, 解压并删除原tar文件
-f: 置顶文件名, 后面不能再跟其他选项字母了,必须是文件名, 但是再在这个后面又可以跟 -? 选项: -C: 指定解压到的目的目录 不是-c, 小写的-c是创建. -p保留原来文件的属性. tar ...
- linux tar压缩解压命令的详细解释
tar [-cxtzjvfpPN] 文件与目录 参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意 ...
- linux tar 压缩解压命令
tar命令: -c 压缩-x 解压缩-t 不解压的情况下查看文件内容-r 向压缩文件追加文件-u 更新压缩文件 以上参数必须和'-f'参数连用,且'-f'必须为最后一个参数,后接文档名 -z 对应gz ...
随机推荐
- 虚拟机ubuntu 网速慢的解决方法
其实虚拟机网速慢,我觉得就两个限制因素.一个是虚拟机的内存,内存小了,上传和下载的速率就慢了,就像内存小的虚拟机跑得慢是一个道理:还有一个就是网络连接方式,这里我使用的是桥接,之前我使用的NAT模式, ...
- 你的环境有问题吧?--byte数组转字符串的疑惑
1. 故事背景 小T是个测试MM,小C是个程序猿,今天早上他们又为一个bug吵架了. 小T:“这个显示是bug,在我的浏览器上显示不正确” 小C:“这个bug我不认,在我的电脑上显示正常,是你的环境有 ...
- Thinkphp5.0第二篇
查询构造器 //插入记录 $result=Db::table('think_data')->insert(['name'=>'张三','status'=>1]); //修改数据 $r ...
- php有关数据推荐
# PHP<PHP程序设计>(第2版) --PHP语法和入门最好的书<PHP5权威编程> --PHP入门后升级书<深入PHP:面向对象.模式与实践>(第3版) ...
- 【原创】(七)Linux内存管理 - zoned page frame allocator - 2
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- mac下idea中安装docker插件
idea中安装docker插件: 点击Intellij IDEA->Preferences...->Plugins->Browse repositories...如下: 点击Inst ...
- 从零开始的 phpstorm+wamp 组合下的debug环境搭建(纯小白向)
本文主要是为了帮自己记住每次重装系统后需要干点啥,如果能帮到你,烦请给个好评 环境说明: 1. windows10 64bit 2. wampservers 3.0.6(x86) apache2.4. ...
- A-04 坐标轴下降法
目录 坐标轴下降法 一.坐标轴下降法流程 二.坐标轴下降法和梯度下降法的异同 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:http ...
- CONVERT用法指南,时间字段截取方法
语法: CONVERT(VARCHAR(7),<字段名称>,121) 时间转字符:select CONVERT(VARCHAR(7),dyxq,121),* from TBYPKC03-- ...
- Mac上Charles抓包iOS的https请求
介绍一款抓包工具,一般我在windows下使用Fiddler抓包,Fiddler使用教程这里就不讲了,重点介绍使用mac时的抓包工具----Charles. 进入官网 :Charles官网地址官网下载 ...