On Linux, it's possible to encounter multiple files with the same inode. The most common case
of this is a hardlink. async is agnostic as to whether two files with
multiple inodes are hardlinks or if they are actually different. It assumes that directories
have unique inodes.
Handling Hardlinks
- One or more hardlinks at the source become regular files at the destination.
- In continuous mode, if a file with multiple links changes, only that file is replicated at
the destination (even though all links at the source changed).
- In scan mode (one-time and continuous startup), all files for that link are replicated at
the destination.
Handling Moves in Scan Mode
- If a new file has only one link, async checks whether it is a
move.
- If a new file has two or more links, async does not check whether it is
a move (regardless of whether the other links are inside or outside the sync
directory).
- For directories, async checks whether or not it is a move.
Handling Moves in Continuous Mode
For all files and directories,
notifications tell async the old and new paths; thus, a move is recognized
in all cases.