The major difference between a hard link and soft link is that hard link is the direct reference to the file whereas soft link is the reference by name which means it points to a file by file name. Hard link links the files and directories in the same file system, but the Soft link can traverse file system boundaries.
A symbolic link, also termed a soft link, is a special kind of file that points to another file, much like a shortcut in Windows or a Macintosh alias. Unlike a hard link, a symbolic link does not contain the data in the target file. It simply points to another entry somewhere in the file system.
A hard link is a file that points to the same underlying inode, as another file. In case you delete one file, it removes one link to the underlying inode. Whereas a symbolic link (also known as soft link) is a link to another filename in the filesystem.
Soft Link contains the path for original file and not the contents. Removing soft link doesn’t affect anything but removing original file, the link becomes “dangling” link which points to nonexistent file. A soft link can link to a directory.
If you find two files with identical properties but are unsure if they are hard-linked, use the ls -i command to view the inode number. Files that are hard-linked together share the same inode number. The shared inode number is 2730074, meaning these files are identical data.
This hard link is duplicate copy of the original file, a shortcut to the file. Editing it will make changes to the file. The hard link acts like the copy.
Hard links are useful for backups. It allows you to make a “copy” of the file, without actually copying the file. For example, say you have a very important, very large set of data, multiple people have access to it and use it regularly.
A hard link is essentially a synced carbon copy of a file that refers directly to the inode of a file. Symbolic links on the other hand refer directly to the file which refers to the inode, a shortcut.
How to create a hard links in Linux or Unix
- Create hard link between sfile1file and link1file, run: ln sfile1file link1file.
- To make symbolic links instead of hard links, use: ln -s source link.
- To verify soft or hard links on Linux, run: ls -l source link.
Example – Hard links
Display inodes for both files using i argument of the ls command. From the output, you can notice that both sample1 and sample2 have the same inode number (1482256). Also, both files have the same file permissions and the same size.
The maximum number of hard links to a single file is limited by the size of the reference counter. On Unix-like systems the counter is 4,294,967,295 (on 32-bit machines) or 18,446,744,073,709,551,615 (on 64-bit machines.)
Ln Command to Create Symbolic Links
- By default, the ln command creates a hard link.
- Use the -s option to create a soft (symbolic) link.
- The -f option will force the command to overwrite a file that already exists.
- Source is the file or directory being linked to.
Why use symbolic links? You can operate on symlinks as if they were the actual files to which they pointing somewhere down the line (except deleting them). This allows you to have multiple “access points” to a file, without having excess copies (that remain up to date, since they always access the same file).
Conclusion. To remove a symbolic link, use either the rm or unlink command followed by the name of the symlink as an argument. When removing a symbolic link that points to a directory do not append a trailing slash to the symlink name.
Yes. They both take space as they both still have directory entries. A hardlink entry (really, a “normal entry” that [often] shares an inode) takes space, as does a symlink entry which must store the link path (the text itself) somehow.