¿Hay una longitud máxima de metadatos que se puedan escribir en un comando xattr?

3

¿Existe alguna limitación en la longitud del texto por la cantidad de texto que se puede colocar en xattr? Planeo poner el código fuente de mi AppleScripts en archivos de script para que Spotlight pueda encontrarlo. El uso de Finder Comments no es una opción debido al volumen de cambios que escribiré.

do shell script "xattr -w com.apple.metadata:kmditemmusicalgenre " & source_code & " " & quoted form of script_path
    
pregunta LucasFan 14.04.2013 - 17:49

2 respuestas

2

Como se mencionó en bmike, xattr.h tiene una constante llamada XATTR_MAXSIZE que se establece en 64 MiB:

/* Maximum extended attribute size supported by VFS */
#define XATTR_MAXSIZE       (64 * 1024 * 1024)

VFS significa sistema de archivos virtual.

De enlace :

  

Aunque las bifurcaciones nombradas en HFS + admiten cantidades de datos arbitrariamente grandes a través de extensiones, el soporte del sistema operativo para atributos extendidos solo admite atributos en línea, limitando su tamaño a lo que puede caber dentro de un único nodo B *.

No sé si eso es correcto o cómo ver ese tamaño. Sin embargo, primero te encontrarás con la longitud máxima del argumento:

$ getconf ARG_MAX
262144
$ touch a.txt
$ xattr -w someattribute "$(dd if=/dev/random bs=140000 count=1)" a.txt
1+0 records in
1+0 records out
140000 bytes transferred in 0.011996 secs (11670527 bytes/sec)
xattr: [Errno 7] Argument list too long: 'a.txt'

No pude encontrar ninguna manera de obtener información de STDIN o cualquier otra solución alternativa para ello.

También puedes usar nombres de atributos personalizados:

$ xattr -w com.apple.metadata:MyAttribute gfdylvyieo a.txt
$ mdls -n MyAttribute a.txt
MyAttribute = "gfdylvyieo"
$ mdfind gfdylvyieo
/private/tmp/a.txt
    
respondido por el user495470 14.04.2013 - 19:57
0

Solo para agregar una segunda respuesta más pragmática. Por lo general, es mejor obtener una aplicación que pueda indexar los archivos que desea indexar en lugar de rellenar datos duplicados en los recursos / metadatos.

La pregunta anterior muestra cómo usar mdls para seleccionar la clasificación de archivos de los archivos de datos que desea indexar y luego cómo obtener un importador en el sistema de Spotlight para manejar ese tipo de archivo reportado para que obtenga ese archivo. escriba dentro de la lista mdimport -L para que esté indexando el contenido de todos los archivos que desea incluir.

    
respondido por el bmike 24.09.2018 - 17:16

Lea otras preguntas en las etiquetas