What is the difference between a soft (symbolic) link and a hard link?

9,141

Solution 1

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.)

Solution 2

The summary is that a symbolic / short link acts as a shortcut to the first file's location, whereas a hardlink is a shortcut to the file on the disk.

If you delete the target of a soft link then the soft link will cease to work, but if you delete one copy of a hard link, the file will remain on the disk until all hard links to it are removed. In effect all filenames are hardlinks to the file on the disk.

There are also certain restrictions, eg I don't think you can create hard links of folders, but you can create soft links of them. Soft links can also point to files/folders on different drives and partitions whereas hard links can't.

Share:
9,141

Related videos on Youtube

Aaron K
Author by

Aaron K

Currently working as a combo sysadmin, dev, and PM. Most dev work is on the web stack using PHP (with Cake) and dabbling in Rails. Striving for the one app to rule them [nodes] all...

Updated on September 17, 2022

Comments

  • Aaron K
    Aaron K over 1 year

    I hear that you can now create soft links in Vista too. So, what is the difference between a soft (symbolic) link and a hard link on UNIX/Linux/Vista?

    Are there advantages of using one over the other? Or do they just serve two distinct purposes?

    • Ryan C. Thompson
      Ryan C. Thompson over 14 years
      In practical terms, the answer is that you almost always want to use a symbolic link. My understanding is that hard links are mostly for preserving space, especially in things like snapshots and incremental backups, where successive snapshots have many identical files that are unlikely to change in the future.
    • Craig Vermeer
      Craig Vermeer about 13 years
      Should this be migrated to Unix & Linux? See unix.stackexchange.com/questions/9575/…
    • Richard West
      Richard West almost 13 years
      No it should not be migrated. As the original question is not specific to Unix only -- Windows supports hard and soft links.
    • warren
      warren over 12 years
      some applications will break (and sometimes badly) if you use a soft link - expecially for directories: the softlink will get dereferenced, and when it is and the application compares, say /var/opt/log/appname (its config) with the dereferenced value, say /apps/appname/logs, it will complain this it's not a match. The fix for this is to use a mount --bind (on Linux) to remount the original directory to the new location.
    • Kcmamu
      Kcmamu over 12 years
      +1; Exactly what I use hard links for on my home Linux system - blog.interlinked.org/tutorials/rsync_time_machine.html
    • Admin
      Admin over 11 years
      Just to clear up a couple of points included in other answers... Windows can make hardlinks (though I believe they behave slightly differently than in Unix). Take a look at the mklink command and the h argument. (If you type mklink into the command line you will see the help file which includes the basic syntax.)
  • Artem Russakovskii
    Artem Russakovskii almost 15 years
    Nice summary. Every Linux user should know this (though hard links are very uncommon).
  • lYriCAlsSH
    lYriCAlsSH almost 15 years
    dmckee's answer has the details about the semantics pretty much exact. The only detail I would add is an explanation of what happens at a higher level: a soft link is a file on its own, while a hard link is a directory entry pointing to existing data. Wikipedia has more details about hard and soft links.
  • Razique
    Razique over 14 years
    nice sum up, very usefull
  • Victor Matheus Alves Ramos
    Victor Matheus Alves Ramos over 14 years
    It should also be noted that hard links share permissions as well as ownership information.
  • Mircea Vutcovici
    Mircea Vutcovici about 13 years
    Please add that 2 hardlinks are automatically created with the name . and .. each time you create a folder. In Linux that those are the only valid hardlinks to a folder.
  • Philip
    Philip over 11 years
    No, NTFS supports hardlinks and has since NTFS 3.1 (the current version since XP/2003).