文档章节

tar命令解压时文件时间戳不对的问题

__赵小刚__
 __赵小刚__
发布于 2017/05/30 19:41
字数 483
阅读 70
收藏 0

一般地,用tar命令解压tar包,tar包中的文件时间戳(mtime, 文件修改时间)会保持不变。

但有时在MacOS上tar一个包,在ubuntu上解压可能存在问题。

在MacOS上目录结构如下

0
├── a
│   └── aa
└── b
    └── bb

在MacOS上执行 tar cvf 0.tar 0/ (注意tar时文件、目录的顺序,在ubuntu上执行时顺序不一样)

# tar --version
bsdtar 2.8.3 - libarchive 2.8.3
# tar cvf 0.tar 0/
a 0
a 0/a
a 0/b
a 0/b/bb
a 0/a/aa

将这个0.tar scp到一个ubuntu(14.04)的环境用tar命令解压时发现0/a这个目录的时间戳不对

通过strace能看到ubuntu上的tar解压0.tar的步骤大概是

  • 读到记录0 创建 目录0
  • 读到记录0/a 创建 目录0/a
  • 读到记录0/b 修改 目录0/a 的时间戳(因为认为之后不会出现0/a/*)  创建 目录0/b
  • 读到记录0/b/bb 创建 文件0/b/bb 并修改其时间戳(下略)
  • 读到记录0/a/aa 修改 目录0/b 的时间戳 创建 文件0/a/aa (此时 目录0/a 的修改时间被修改)
  • 修改 目录0 的时间戳

在ubuntu上tar的顺序

# tar --version
tar (GNU tar) 1.27.1
# tar cvf 0.tar 0
0/
0/b/
0/b/bb
0/a/
0/a/aa

如果tar文件是上面的顺序,解压时不会出现时间戳不一样的问题。

  • MacOS上用tar压缩和解压不会有时间戳的问题
  • ubuntu上用tar压缩和解压不会有时间戳的问题
  • MacOS上tar的包交给ubuntu解压可能有时间戳的问题
  • 这个问题跟不同版本的tar的默认行为有关系,和OS无关,我的MacOS上tar版本是bsdtar 2.8.3,ubuntu上tar的版本是GNU tar 1.27.1
  • 好吧,一个小坑

© 著作权归作者所有

共有 人打赏支持
__赵小刚__
粉丝 5
博文 40
码字总数 19021
作品 0
成都
程序员
2017-05-06工作小结

自今日起,将每日工作小结写做博客,用来记录工作具体情况,一来记录工作得失,二来警醒自己。 1、线上正式运行的linux服务器要下载程序文件,(程序是phpcmsv9)一般来说是要先压缩文件,然后...

高安宇
2017/05/06
0
0
Linux 系统中文件传输及文件归档

在linux系统中,我们要进行文件的传输,当文件比较多又比较大的时候,我们往往需要 对文件进行处理,以提高传输速率。如下将进行详细的方法介绍,以解决问题。 一、系统中的文件传输 进行两台...

Uniqueh
2017/10/25
0
0
linux文件归档、压缩与上传、下载

1.文件归档 定义: 2. tarc##创建 二、压缩 gz tar命令仅仅是将多个文件进行同意归档为一个文件,在归档的过程中会将一些应用程序的快捷方式自动的删除,但是gizp命令会将文件压缩,具体操作...

技术小白JDY
2017/10/24
0
0
tar time stamp in the future问题

在A机器上用tar压缩的文件,在B机器上进行解包的时候,如果两个机器的时间不一致,如B机器的时间落后A机器的时间,这时 就会出现time stamp in the future的问题。如何解决这个问题呢: (1...

偶是小娃
2013/12/03
0
0
文件打包与解压缩

目录: zip压缩打包程序 unzip解压缩zip文件 rar打包压缩命令&unrar解压rar文件 tar打包工具 使用zip压缩文件 Linux中常见的压缩文件如下: 1.zip压缩打包程序 以下参数1表示压缩时间快体积大...

honzhang
2017/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python做文本内容指定区域字符串替换

需求: 因为公司项目需要做SEO优化,所以对项目中的各种长连接做优化,比如本文中提到的精简路径;之前已经批量吧文本的路径名字等做过修改,这里不再赘述;这里的问题是外部的路径修改了,文...

坦途abc
19分钟前
1
0
MySQL 关键字模糊匹配,并按照匹配度排序

MySQL 关键字模糊匹配,并按照匹配度排序。 方式一、按照关键字搜索,然后根据关键字所占比例排序 SELECTdrug_name,pinyinFROMtbl_drugWHEREpinyin LIKE '%AM%'ORDER BY...

yh32
29分钟前
2
0
虚拟机学习之一:java内存区域与内存溢出异常

1.运行时数据区域 java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间,有的区域伴随虚拟机进程的启动而存在,有些区...

贾峰uk
30分钟前
0
0
Spring加载properties文件的两种方式

在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修...

架构师springboot
46分钟前
1
0
分布式事务,原来可以这么玩?

多个数据要同时操作,如何保证数据的完整性,以及一致性? 答 : 事务 ,是常见的做法。 举个栗子: 用户下了一个订单,需要修改 余额表 , 订单 表 , 流水 表 ,于是会有类似的伪代码: st...

微笑向暖wx
49分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部