老超市技术论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组

    Mac使用tar命令打包多出隐藏文件

    教程/The tutorial
    1
    1
    3
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • A
      admin 最后由 编辑

      Mac使用tar命令打包多出隐藏文件
      现象
      近期遇到了一个非常诡异的事情,在MacOS上打的tar包,在linux上解压多出了一些 ._ 开头的隐藏文件。

      问题排查
      我们来看下这个目录的内容, 然后我们来打包这个目录并MacOS查看压缩包的内容:

      接下来我们把这个文件上传到linux服务器上,再查看这个压缩包的内容:

      此时发现多了一个隐藏文件,那么问题来了,为什么会多?有程序读取这个文件就会出现异常!

      问题原因
      经过排查,发现 MacOS 上的tar,和linux的tar竟然不止同一个系列!

      MacOS是将tar命令link到bsdtar

      Linux是原生的GNU tar命令

      发现了问题,就方便寻找解决方案。翻了翻bsdtar的文档(man手册也行)

      手册中有非常明确的提示,这个是MacOS特有的,用于存储一些MacOS中文件特殊的属性。

      问题验证
      查看文件的特殊属性?
      mac上使用gnu tar查看是否也会有隐藏文件?

      如图所示,确实与描述一致,使用xattr看到了扩展属性,使用gun tar也看到了隐藏文件

      解决方案
      方案一 使用COPYFILE_DISABLE=1参数
      COPYFILE_DISABLE=1 tar -zcvf junit.tar.gz junit-4.13.jar
      方案二 使用 --no-mac-metadata
      tar --no-mac-metadata -zcvf junit.tar.gz junit-4.13.jar
      方案三 使用gtar打包
      通过homebrew安装guntar ( https://formulae.brew.sh/formula/gnu-tar )
      使用gtar进行打包
      原文:https://www.antergone.com/archives/29.html

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      ICP证: 辽ICP备16008076号-2 辽公网安备 21140302000151号