使Mac tar停止将._ *文件名放入tar归档文件中[重复]


46

可能重复:
为什么在OS X的压缩包中会得到._foo之类的文件?

我在Mac上创建autoconf脚本。tar运行时,会将所有这些._ foob​​ar名称放入归档文件中:

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

现在,苹果的HFS文件系统正在将文件属性放在._ foob​​ar名称中,以便可以在另一个Mac系统上还原它们。但是我不要他们---他们只是我的垃圾。有什么办法压制他们?



2
@geekosaur unix.SE上的用户放弃并接受了错误的答案。
丹尼尔·贝克

还有一个相关的问题SU问题,即关于使用相同解决方案从存档文件(例如)中正确提取._*文件的.__init__.py问题。
克里斯·约翰森

Answers:


69

回答一个问题,你可以设置无证(?)环境变量COPYFILE_DISABLE防止几个系统提供的程序(包括焦油)从赋予特殊含义._*归档成员。特别是,这将阻止他们:

  • 将扩展的属性数据(包括资源派生)存储在._*存档成员中
    (即,不要“污染”在Mac OS X上创建但打算在其他系统上使用的存档),以及

  • 尝试从名称为的档案成员中提取扩展属性或资源._*
    (即不要误解._*其他系统档案中的档案成员)。

您用于环境变量的值并不重要(它甚至可以是空字符串)。像0和这样的值false将不会重新启用该功能。唯一重要的是是否设置了变量(必须“取消设置”它才能重新启用该功能)。

您可以利用Bourne样式的shell(shkshbashzsh等)为命令加上额外的环境变量作为前缀,从而在各个命令上使用此变量。

COPYFILE_DISABLE=1 tar cf new.tar …

如果您经常遇到此问题,则可能需要在外壳程序的初始化文件之一中设置和导出此变量。

# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

必要时,您可以为单个命令取消设置变量。

(unset COPYFILE_DISABLE; tar cf somefile.tar …)

在此Mac OS X 10.6系统上,以下命令似乎都知道COPYFILE_DISABLE:

  • /usr/bin/tar(到的符号链接bsdtar
  • /usr/bin/bsdtar
  • /usr/bin/gnutar
  • /bin/pax

COPYFILE_DISABLE起源于Mac OS X 10.5。如果需要支持10.4,则它具有COPY_EXTENDED_ATTRIBUTES_DISABLE的工作方式相同。


哇。正是我想要的。谢谢。我的autoconf文件将干净得多。
2011年

0

不是专家,但经过一番调查后发现:http : //www.ofzenandcomputing.com/zanswers/3422

和这个:http : //hintsforums.macworld.com/archive/index.php/t-28703.html

第二个命令看起来好像可以将其合并到脚本中……您可能无法阻止创建资源派生文件,但之后可以将其自动删除。

编辑:我应该提到这可能会导致不良结果,使用后果自负。


1
该脚本从本地磁盘上的文件中删除资源派生。它们通常用于某个目的(例如更改某个文件的关联应用程序),因此应带有很大的警告。
丹尼尔·贝克

该脚本对我没有帮助。它从磁盘而不是tar存档中删除文件。原来,我的磁盘上没有资源文件。但是它们被保存在档案中。与zip文件不同,您不能仅从tar存档中删除文件。
2011年

(超时,超时)实际上,tar除了libarchive基于BSD 的服务器(包括Mac OS X)之外,几乎可以使用任何其他工具,但可能并不可靠;安装GNU tar通常是一个好主意。(但是,这很痛苦。我认为您需要列出所有这些名称,然后在命令行中传递这些名称。)而且,技术上讲,资源派生在磁盘上,但是在HFS +上,它们存储在扩展属性中;这些._文件是OS X在不支持扩展属性的地方存储资源派生的方式。
geekosaur 2011年

0

您可以尝试编译自己的tar,或者从Macports或Fink安装(如果可用的话)(Homebrew没有它)。运气不错,它应该对OS X元数据一无所知,而跳过创建那些文件。


我很乐意为下降投票作出解释。谢谢。
丹尼尔·贝克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.