在mac os下HFS+的文件系统上 文件经常会被附加上mac专有的扩展属性 具体的表现是用ls -l 查看时 会有@标志 比如

$ ls -l total 0 -rw-r–r–@ 1 Daniel  staff  0 16 Jul 19:28 1.txt -rw-r–r–  1 Daniel  staff  0 16 Jul 19:28 2.txt

这个属性是用户在Finder里对文件进行任意操作时 就会附加上的 -  -  比如右键看Info 然后在Spotlight Commends里写上几个字再删掉  @属性是不会删掉的

问题来了 - 如果把文件从mac系统用tar打包 拷贝到linux系统释放文件  @属性会造成莫名的错误

我就在我们公司的linux服务器上发布网站的时候碰到过这个事情  页面里莫名出现一段com.apple.metadata *** 这样的字段

google了一阵 原因在于tar命令本身默认并不区分extend attributes 但是mac下的cp命令做的更好 选项 -X 即可忽略这些属性

man cp:   -X    Do not copy Extended Attributes (EAs) or resource forks.

对于这个问题 nabble上的这个帖子有着很精简的回答  即在打包前先用cp -XR 拷贝出一份没有扩展属性的 然后再tar

对于大量文件传输来说这是最简单的办法

如果想手动去除掉文件的@属性 可以使用命令 xattr

$ xattr -l 1.txt com.apple.metadata:kMDItemFinderComment: 0000   62 70 6C 69 73 74 30 30 50 08 00 00 00 00 00 00    bplist00P……. 0010   01 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00    ……………. 0020   00 00 00 00 00 00 00 00 00 09                      ……….

$ xattr -d com.apple.metadata:kMDItemFinderComment 1.txt $ xattr -l 1.txt 此时就没有特殊属性了 $xattr -rc directory 循环删除 directory 下所有的特殊属性