How to create hard and soft (symbolic) links in Linux
In this tutorial, you will learn how to use hard and symbolic links (also called “soft” links) to make multiple file names reference the same file. In Linux, two common ways to create multiple names that point to the same file are:
- Create a soft link to the file (symbolic link)
- Create a hard link to the file.
Use soft links (symbolic links)
A soft link is a special type of file that points to an existing file or directory. It can be used to link two files on different file systems. Soft links can also point to special files.
of ln -s The command is used to create soft links. Let us consider an example:
In the following example, ln -s The command is used to create a new soft link for the existing file /tmp/file1.txt, which will be named /tmp/file2.txt:
$ echo "Hello from file1" > /tmp/file1.txt
$ ln -s /tmp/file1.txt /tmp/file2.txt
Confirm by listing the files:
$ ls -l /tmp/file1.txt /tmp/file2.txt -rw-------. 1 jkmutai jkmutai 17 Feb 4 22:37 /tmp/file1.txt lrwxrwxrwx. 1 jkmutai jkmutai 14 Feb 4 22:38 /tmp/file2.txt -> /tmp/file1.txt
You can see that the first character of the long list of /tmp/file2.txt is Rise Instead of-. This indicates that the file is a soft link, not a regular file. (A kind of d Indicates that the file is a directory. )
Check the contents of the symbolic link file.
$ cat /tmp/file2.txt
Hello from file1
For directories, use:
ln -s /dir /dir2
If you delete the original regular file, the soft link will still point to the missing file-“Dangling Soft Links. “
Use hard links
Every file in Linux starts with a single hard link. By creating a new hard link to a file, you can create another name that points to the same data.
The new hard link behaves exactly the same as the original file name. It’s hard to tell the difference between the new hard link and the original name of the file. You use ln Create hard link command-points to another name for an existing file.
$ echo "Hello World from Hard Link" >/tmp/hello1.txt
$ ln /tmp/hello1.txt /tmp/hello2.txt
where:
- /tmp/hello1.txt is the path to the existing file
- /tmp/hello2.txt is the hard link you want to create.
Use ls -i ls list file options Inode number. If the inode numbers are the same, the files are hard links to the same data.
$ ls -li /tmp/hello1.txt /tmp/hello2.txt 2591191 -rw-------. 2 jkmutai jkmutai 27 Feb 5 08:16 /tmp/hello1.txt 2591191 -rw-------. 2 jkmutai jkmutai 27 Feb 5 08:16 /tmp/hello2.txt --- Let's add third file and recheck --- $ ln /tmp/hello1.txt /tmp/hello3.txt $ ls -li /tmp/hello1.txt /tmp/hello2.txt /tmp/hello3.txt 2591191 -rw-------. 3 jkmutai jkmutai 27 Feb 5 08:16 /tmp/hello1.txt 2591191 -rw-------. 3 jkmutai jkmutai 27 Feb 5 08:16 /tmp/hello2.txt 2591191 -rw-------. 3 jkmutai jkmutai 27 Feb 5 08:16 /tmp/hello3.txt
All hard links referencing the same file have the same content:
- Number of links
- access permission
- User and group ownership
- Time scale
- document content
Compared with soft links:
$ ls -li /tmp/file1.txt /tmp/file2.txt /tmp/file3.txt 2442008 -rw-------. 1 jkmutai jkmutai 17 Feb 4 22:37 /tmp/file1.txt 2442949 lrwxrwxrwx. 1 jkmutai jkmutai 14 Feb 4 22:38 /tmp/file2.txt -> /tmp/file1.txt 2601927 lrwxrwxrwx. 1 jkmutai jkmutai 14 Feb 5 08:24 /tmp/file3.txt -> /tmp/file1.txt
The main differences between soft and hard links
- Hard links point names to data on the storage device
- Soft links point a name to another name that points to data on the storage device
Enjoy your Linux time and check out our special offers for more information.
Learning Materials Now Available
To purchase Linux books, check:
Best Linux Books for Beginners and Experts
LPIC-1 and LPIC-2 reference books
Read RHCSA and RHCE books