linux 解压文件时间戳是未来,tar命令解压时文件时间戳不对的问题

一般地,用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

好吧,一个小坑

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值