macOS打的tar包中出现隐藏文件
bmj

起因

搭服务器的时候一开始选用了Amazon Linux 2,但是发现了只能安装postgresql-11的问题,因为本地开发环境是12,所以会存在一些的函数postgresql-11不支持。所以改用了Ubuntu20.04

需要将本地的代码上传服务器,我是在mac-book-pro上开发的,就用了tar -zcvf打包上传。
在ubuntu上解压后发现目录下多了 ._.DS_Store 两种隐藏文件(linux下.开头的文件就是隐藏文件)
因为我的Dockerfile里面写的是 ARG JAR_FILE=jar/*.jar, 解压之后就会多了 ._*.jar 的文件,那docker build的时候就会报错了。


解决办法

1. 在ubuntu上处理

在解压后的根目录下执行:
find . -type f -name '._*' -delete
find . -type f -name '.DS_Store*' -delete
删除这两种隐藏文件

2. 在mac上处理

export COPYFILE_DISABLE=true
在执行tar命令打包就可以


结语

我在使用Amazon Linux 2时貌似没有发现这个问题,不清楚是不是因为内核或者没有显示隐藏文件的原因。
不过,这些隐藏文件只是mac系统用来记录文件信息的,删除并不会产生影响。


参考

mac为什么自动创建点下划线._文件,怎么删除?

 Comments