Some file systems might contain additional hidden data within them. For Windows filesystems, such 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.
Starting with version 1.3, 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 .sync\StreamsList file and can be modified.
Default SteramsList file contains next xattrs:
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 couple as a sample:
- 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.
Note. Older 1.3 clients could not store xattrs in such a way and were found to continue attempting to create a storage on target filesystem. If you are using Sync 1.3, make sure that you are running the latest version.
xattrs and IgnoreList
Xattrs cannot be ignored by IgnoreList. If you want to stop some xattr from being synced - simply remove it from StreamsList.
Note. Older 1.3 clients supported ignoring of xattrs by .SyncIgnore file due to bug in the code. It no longer works starting from Sync version 1.4.