1

From this StackOverflow thread, I get to know that symbolic links have their own inodes that are different from those of their targets. This can be verified with ls -i. The command will show that a symbolic link and its target have distinct inode numbers. But how things are with hard links? Does creating a hard link create a new inode, or it simply adds an entry in the data of the containing directory without creating any new inode? In other words, does creating a hard link create a real file? Creating a symbolic link certainly does.

Community
  • 1
  • 1
Lingxi
  • 14,579
  • 2
  • 37
  • 93

1 Answers1

2

The same method used to show ln -s creates a new inode can be used to verify ln alone does not. Creating a hard link creates a directory entry pointing to the very same inode (here number 26477281).

$ touch foo 
$ ls -li foo
26477281 -rw-r--r-- 1 jlliagre jlliagre 0 Nov 10 21:39 foo
$ ln foo bar
$ ls -li foo bar
26477281 -rw-r--r-- 2 jlliagre jlliagre 0 Nov 10 21:39 bar
26477281 -rw-r--r-- 2 jlliagre jlliagre 0 Nov 10 21:39 foo

Note that the link count was changed from 1 to 2 after the hard link creation.

jlliagre
  • 29,783
  • 6
  • 61
  • 72