Some file systems might contain additional hidden data within them. For Windows filesystems, this data is called "alternate streams" (alt streams), while Mac and Linux based OS call it "extended attributes" or xattrs. For simplicity we'll call both alt streams and extended attributes with term "xattrs" below.
Sync is capable of synchronizing xattrs. Xattrs are synchronized according to a whitelist, i.e. all listed xattrs are synced, while the rest is ignored. The whitelist is stored in the root of sync share in hidden .sync\StreamsList file . This is a regular text file, and can be modified - some lines added, some lines removed or commented out (with #).
Default StreamsList file contains the following xattrs:
- com.apple.metadata:_kMDItemUserTags
- com.apple.ResourceFork
- com.apple.metadata:kMDItemFinderComment
StreamsList file uses same syntax as IgnoreList.
Cross-platform xattr syncing
There are numerous limitations that do not allow xattrs to sync easily between platforms. Here are some examples:
- Windows: alt streams are not supported on FAT32
- Linux: xattr names MUST start with namespace (.used, .system, etc.) and cannot store more data than 1 filesystem block (usually 4Kb)
- Mac: xattrs are limited in size
When Sync cannot store data in xattr (or in alt stream on Windows), it will create a stub file in .sync\Streams service subfolder and store the name and content of the xattr there. So, even if one of peers cannot store xattrs properly, it is capable of propagating xattrs to other peers.
xattrs and IgnoreList
Xattrs cannot be ignored by IgnoreList. If you want to stop some xattr from being synced - simply remove it from StreamsList.