exFAT vs NTFS on Linux

Both exFAT and NTFS are Microsoft proprietary filesystem. exFAT, also called FAT64, is a very simple filesystem, practically an extension of FAT32, due to its simplicity it's well implemented in Linux and very fast.

But due to its easy structure, it's easily affected by fragmentation, so performance can easily decrease with the use.

exFAT doesn't support journaling thus meaning it needs full checking in case of unclean shutdown.

NTFS is slower than exFAT, especially on Linux, but it's more resistant to fragmentation. Due to its proprietary nature it's not as well implemented on Linux as on Windows, but from my experience it works quite well. In case of corruption, NTFS can easily be repaired under Windows (even for Linux there's ntfsfix) and there are lots of tools able to recover lost files.

Personally, I prefer NTFS for its reliability. Another option is to use ext4, and mount under Windows with extfsd, ext4 is better on Linux, but the driver is not well implemented on Windows. Extfsd doesn't fully support journaling, so there is a risk to write under Windows, but ext is easier to repair under Linux than exFAT.


I suggest you give UDF a try. UDF is an open, vendor-neutral file system that was originally designed for use on optical disks, but can be used R/W on other drives too, including USB drives. UDF supports a maximum file system size of 2 TB (with a block size of 512 bytes), it supports long Unicode file names, and keeps record of file times.

Windows apparently requires the disk to be partitioned, and the file system should be created with media type hd and a block size of 512:

mkudffs --media-type=hd --blocksize=512 /dev/sdxN