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 ...
随机推荐
- 虚拟机安装Centos7系统后优化操作
重点说明 以下操作针对于VMware软件上新创建的Centos7的虚拟机的优化,当需要多台虚拟机的实验环境时,可通过以下需求先操作配置出一台优化机(也可称为模板机),并创建快照记录,以后的多台虚拟机环 ...
- iOS 设备数据管理工具 iMazing v2.10.3 绿色便携版
iMazing 是一款可以帮助用户管理 iOS 设备的软件,功能远远超出 iTunes.iMazing 连接你的 iOS 设备(iPhone. iPad 或 iPod)相连,使用起来也非常的方便.你可 ...
- Cheapest Palindrome POJ - 3280
Keeping track of all the cows can be a tricky task so Farmer John has installed a system to automate ...
- Huffman树及其编解码
Huffman树--编解码 介绍: Huffman树可以根据输入的字符串中某个字符出现的次数来给某个字符设定一个权值,然后可以根据权值的大小给一个给定的字符串编码,或者对一串编码进行解码,可以用于 ...
- tesseract 测试样例
该图片的链接为https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下载. 首先用命令 ...
- 【C语言笔记】#define与typedef的区别
1.#define define是预处理指令,在编译时不进行任何检查,只进行简单的替换 宏定义的一般形式为: #define 宏名 字符串 这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符 ...
- Win10安装gcc、g++、make
下载安装包: 1. MinGW官网下载:http://www.mingw.org 点击右上角Downloads 点击下载 mingw-get-setup.exe 2. 百度网盘(2 ...
- 机器学习:数据清洗及工具OpenRefine
数据分析中,首先要进行数据清洗,才可以继续训练模型,预测等操作. 首先介绍一下什么是数据清洗(定义来自 百度百科,有删减) 数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别 ...
- [Noip1997] 棋盘问题(2)
题目描述 在N×NN \times NN×N的棋盘上(1≤N≤10)(1≤N≤10)(1≤N≤10),填入1,2,…,N21,2,…,N^21,2,…,N2共N2N^2N2个数,使得任意两个相邻的数之 ...
- opencv::轮廓发现(find contour in your image)
轮廓发现(find contour) 轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法. 所以边缘提取的阈值选定会影响最终轮廓发现结果 //发现轮廓 cv::findContours( InputO ...