我想使用 xattr 将文件上的一些元数据直接存储在文件上。这些本质上是我在搜索文件时用于对文件进行分类的标签。我的目标是通过将更多信息与每个标签关联来扩展通常的 Mac OS X 标签,例如添加该标签的日期以及其他内容。
我正在考虑使用xattr -w. 我的第一个猜测是在这个 xattr 值中存储类似 JSON 的东西,但我想知道
1)我可以在 xattr 中存储的大小有哪些限制?(xattr 的 man 是 vauge,指的_PC_XATTR_SIZE_BITS是我在任何地方都找不到的东西)
2)将 JSON 格式的字符串存储为 xattr 有什么问题吗?
根据man pathconf,有一个 \xe2\x80\x9c 可配置的系统限制或选项变量\xe2\x80\x9d_PC_XATTR_SIZE_BITS称为
\n\n\n用于存储最大扩展属性大小(以字节为单位)的位数。例如,如果文件系统支持的最大属性大小为 128K,则返回的值将为 18。但是,值 18 可能意味着最大属性大小可以为 (256KB - 1) 到128KB。作为一种特殊情况,资源分叉可以具有更大的大小,并且某些文件系统特定的扩展属性可以具有更小的预设大小;例如,Finder Info 始终为 32 字节。
\n
您可以使用这个用 Swift 4 编写的小型命令行工具来确定此参数的值:
\n\nimport Foundation\n\nlet args = CommandLine.arguments.dropFirst()\n\nguard let pathArg = args.first else {\n print ("File path argument missing!")\n exit (EXIT_FAILURE)\n}\n\nlet v = pathconf(pathArg, _PC_XATTR_SIZE_BITS)\n\nprint ("_PC_XATTR_SIZE_BITS: \\(v)")\n\nexit (EXIT_SUCCESS)\nRun Code Online (Sandbox Code Playgroud)\n\n我得到:
\n\n作为用于存储最大扩展属性大小的位数。这意味着实际最大 xattr 大小在范围内
\n\n| 归档时间: |
|
| 查看次数: |
1836 次 |
| 最近记录: |