What are the advantages of symlinks over hard links and viceversa

hardlinksymbolic-linkunix

I understand the differences between symbolic and hard links, but I've never understood why choose one or the other.

Best Answer

This has been discussed in some detail on ServerFault.

A hard link traditionally shares the same file system structures (inode in unixspeak), while a soft-link is a pathname redirect.

  • Hardlinks must be on the same filesystem, softlinks can cross filesystems.
  • Hardlinked files stay linked even if you move either of them (unless you move one to another file system triggering the copy-and-delete mechanism). Softlinked files break if you move the target (original), and sometimes when you move the link (Did you use an absolute or relative path? Is it still valid?).
  • Hardlinked files are co-equal, while the original is special in softlinks, and deleting the original deletes the data. The data does not go away until all hardlinks are deleted.
  • Softlinks can point at any target, but most OS/filesystems disallow hardlinking directories to prevent cycles in the filesystem graph (with the exception of the . and .. entries in unix directories which are hard links).
  • Softlinks can require special support from filesystem walking tools. Read up on readlink (2).

(Some details brought back to mind by mat1t. Thanks.)