我正在尝试使用 OSX“xattr”实用程序将扩展属性从一个文件复制到另一个文件。背景是我们正在构建一个备份工具,文件/结构必须保留所有属性、ACL 等......除了资源 fork 等大属性外,一切正常。小属性使用以下方法可以正常工作。在 OS X 10.7.5 上尝试这样做这是我在做什么:
首先,我使用“ls -l@”识别文件的属性。结果如下:
-rwxrwxrwx@ 1 testuser staff 0 3 Jan 2011 File
com.apple.FinderInfo 32
com.apple.ResourceFork 237246
现在我导出属性(com.apple.ResourceFork 是导致问题的原因):
xattr -px com.apple.ResourceFork File > attribfile
我现在想使用以下命令将此属性应用于另一台 Mac 上的文件副本:
xattr -wx com.apple.ResourceFork "`cat attribfile`" File
这导致:
-bash: /usr/bin/xattr: Argument list too long
我想我知道为什么会发生这种情况……资源 fork 数据太长,无法进行论证。我还没有确定它开始突破的阈值,但我怀疑它与 ARG_MAX 有关。 xargs 在这里没有帮助,因为它不是几个较小的参数,而是一个非常大的参数。
所以多个问题:
最佳答案
我不知道有什么方法可以用 xattr
,但是您可以使用一个旧的文件系统技巧。注意:这基本上已经过时了,但在 10.8.2 中仍然有效;我对 10.8.3 等不做任何 promise 。如果 attribfile 是十六进制格式,请使用:
xxd -r -p attribfile >File/..namedfork/rsrc
如果 attribfile 是原始文件,请使用
cat
而不是 xxd -r -p
.如果属性不是资源 fork ,......我不知道。
关于macos - 复制 Mac com.apple.ResourceFork 扩展属性导致 "Argument list too long",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533796/