Where is file metadata stored in Mac OS X?
It used to be stored in a resource fork, but I've tried listing the resource forks for files on my computer, and they don't seem to have resource forks.
Where is the metadata stored now? Like where is it in the filesystem?
How can I access it so I can perform a backup and restore of just the metadata or part of the metadata?
Solution 1:
Extended file attributes
File metadata is stored in extended file attributes (EA) in macOS.
You can see them when listing files in Terminal using command:
ls -la@
For example if your file has a custom Finder icon, you could see listing similar to this one:
-rw-r--r--@ 1 user staff 168142 Oct 1 23:02 file.ext
com.apple.FinderInfo 32
com.apple.ResourceFork 548373
com.apple.metadata:_kMDItemUserTags 42
This means that file has 3 attributes (metadata), including resource fork holding the icon data.
Resource fork
To print resource fork contents of a file, you can use xattr command that allows you to access extended file attributes:
xattr -p com.apple.ResourceFork
however that might not be as useful because resource forks have only binary representation.
You can access that data in different way, through a dedicated filepath filename/..namedfork/rsrc
. Using the example above to copy resource fork into a resource file (data fork):
cp file.ext/..namedfork/rsrc file.rsrc
Many commands have support for handling extended file attributes, for example cp -p
will copy files including access control lists and extended attributes. If you want to copy resource forks separately, then you need to access them individually through ../namedfork/rsrc path.