How does macOS implement symbolic link in Mojave on FAT32 filesystems?

Solution 1:

The Minshall+French format is what macOS uses to store Unix symlinks on FAT and CIFS volumes. More details on the Minshall+French format can be found here:

  • https://wiki.samba.org/index.php/UNIX_Extensions

The Linux CIFS implementation provides a 'mfsymlinks' mount option (which is off by default) that supports the Minshall+French format.

I believe Docker for Windows also supports the Minshall+French format.

Solution 2:

They've implemented using regular files - This feature is specific to macOS with FAT32, and is not portable or compatible with other systems or environments.

Here's a screen shot of directory listing in Explorer and "ls -l"

Screenshot of Windows, Cygwin, and FreeBSD directory listing

And here's the content and hexdump of the file:

//64-bit Cygwin @CGEMA/
$ cat /cygdrive/j/MiniSync/Upload/ref
XSym
0019
086ccc9c5c27f3907e47a03c3423b91e
/Volumes/ProNJF/ref

...

//64-bit Cygwin @CGEMA/
$ od -a -t x1 /cygdrive/j/MiniSync/Upload/ref
0000000   X   S   y   m  nl   0   0   1   9  nl   0   8   6   c   c   c
         58  53  79  6d  0a  30  30  31  39  0a  30  38  36  63  63  63
0000020   9   c   5   c   2   7   f   3   9   0   7   e   4   7   a   0
         39  63  35  63  32  37  66  33  39  30  37  65  34  37  61  30
0000040   3   c   3   4   2   3   b   9   1   e  nl   /   V   o   l   u
         33  63  33  34  32  33  62  39  31  65  0a  2f  56  6f  6c  75
0000060   m   e   s   /   P   r   o   N   J   F   /   r   e   f  nl  sp
         6d  65  73  2f  50  72  6f  4e  4a  46  2f  72  65  66  0a  20
0000100  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp
         20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20
*
0002040  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp  sp
         20  20  20  20  20  20  20  20  20  20  20
0002053

//64-bit Cygwin @CGEMA/
$