C'è una lunghezza massima di metadata che può essere scritta in un comando xattr?

3

Esistono limiti di lunghezza del testo per quanto tempo il testo può essere inserito in xattr? Ho intenzione di inserire il codice sorgente AppleScript in file script in modo che Spotlight possa trovarlo. L'uso dei commenti del Finder non è un'opzione a causa del volume di modifiche che scriverò.

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

2 risposte

2

Come menzionato da bmike, xattr.h ha una costante chiamata XATTR_MAXSIZE che è impostata su 64 MiB:

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

VFS significa file system virtuale.

Da link :

Although the named forks in HFS+ support arbitrarily large amounts of data through extents, the OS support for extended attributes only supports inline attributes, limiting their size to that which can fit within a single B*-tree node.

Non so se è accurato o come vedere quella dimensione. Per prima cosa ti imbatterai nella lunghezza massima dell'argomento:

$ 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'

Non sono riuscito a trovare alcun modo per ottenere input da STDIN o altre soluzioni alternative per questo.

Puoi anche usare nomi di attributi personalizzati:

$ xattr -w com.apple.metadata:MyAttribute gfdylvyieo a.txt
$ mdls -n MyAttribute a.txt
MyAttribute = "gfdylvyieo"
$ mdfind gfdylvyieo
/private/tmp/a.txt
    
risposta data 14.04.2013 - 19:57
fonte
0

Solo per aggiungere una seconda risposta più pragmatica. Di solito è meglio avere un'app in grado di indicizzare i file che si desidera indicizzare invece di inserire dati duplicati nei forks / metadati delle risorse.

La domanda sopra mostra come usare mdls per distinguere la classificazione dei file dei file di dati che si desidera indicizzare e come ottenere un importatore nel sistema spotlight per gestire il tipo di file segnalato in modo da ottenere quel file digita nell'elenco mdimport -L in modo da indicizzare il contenuto di tutti i file che desideri includere.

    
risposta data 24.09.2018 - 17:16
fonte

Leggi altre domande sui tag