The concept of Links in Linux/Unix based systems is Unique and gives a very deeper understanding of the Linux working internals at various levels.
The symbolic also known as Soft link is a special type of linking that acts as a pointer to the original file present on the disk.
The Softlink span across different filesystems extensively and widely used during software package installation and configuring
Lets look at the example of java command linking:
[root@node02 ]# which java /bin/java [root@linuxcent ]# ls -l /bin/java lrwxrwxrwx. 1 root root 22 Apr 10 11:52 /bin/java -> /etc/alternatives/java [root@node02 boot]# ls -l /etc/alternatives/java lrwxrwxrwx. 1 root root 73 Apr 10 11:52 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java [root@linuxcent ]#
If you upgrade java on your system then the /bin/java
command points out to a newer installed version of /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java
We will see the demonstration of a Symbolic link.
In Linux to make the links between files, the command-line utility is “ln”.
Softlink Creation syntax using the Linux command line utility ln -s
option:
ln -s <source file|Directory > <destination Link file|Directory>
Below is an example
[vamshi@linuxcent html]$ ln -sf /var/www/html/index.html /tmp/index.html [vamshi@linuxcent html]$ ls -l /tmp/index.html lrwxrwxrwx. 1 vamshi vamshi 24 Apr 1 18:23 /tmp/index.html -> /var/www/html/index.html
The second file is called a symbolic ink to /tmp/index.html
Now the second file /tmp/index.html
is called a Symbolic link to the First file on the disk /var/www/html/index.html
It means that the second file is just pointing to the first file’s location on disk without actually copying the contents of the file.
[vamshi@linuxcent html]$ cat /var/www/html/index.html Welcome to LinuxCent.com [vamshi@linuxcent html]$ cat /tmp/index.html Welcome to LinuxCent.com
When you edit either of the file, the contents of the original file on disk are directly modified.
How to create Softlinks to Directories in Linux ?
The same logic applies to creating the soft links to directories, Lets see the Demonstration below:
[vamshi@linuxcent html]$ ln -sf /var/www/html/linuxcent/static/ /tmp/static
[vamshi@linuxcent html]$ ls -l /tmp/static lrwxrwxrwx. 1 vamshi vamshi 32 Apr 8 18:37 /tmp/static -> /var/www/html/linuxcent/static/
How do we Remove the linking between the files is even simpler.
Simply run the unlink
command on its Destination:
Sample command:
unlink <destination Link file | Directory>
Lets see the Demonstration
unlink /tmp/data-dir
Understanding Symbolic / Hard link concept better with improving knowledge on Inode.
To better understand the concept of Symbolic linking we need to understand the concept of Inode numbers present in Linux. I will give a brief overview of it in this section But for Detailed Review, Please see the What is Inode in Linux Section.
We can list out the inode number of any file on linux system using [/code]ls -i <filename>[/code]
Now The extreme left column indicates the system wide unique inode number:
[root@node02 ~]# ls -li /var/www/html/index.html /tmp/index.html 67290702 lrwxrwxrwx. 1 root root 24 Apr 8 19:09 /tmp/index.html -> /var/www/html/index.html 33557754 -rw-r--r--. 1 root root 25 Apr 8 18:19 /var/www/html/index.html
We can see here the inode number for both the files have different, Because the second file is just a pointer to the original source file..
So why do we create the Symbolic Links ?
We have the advantages of the Softlinks
- One Advantage of Softlinks/symbolic links is they span across different filesystems
- Can have many softlinks to a single file/Directory.
- Can create Symbolic Links of Directories and Files respectively.
- Rsync program by default preserves the symbolic links.
- The softlinks become activated immediately if the source is recreated or recovered after any kinds of network outages.
What are the best practices when using Softlinks ?
The best practice while creating softlinks is to mention absolute path for source and destination links.
On the other hand you should also understand the disadvantages or shortcomings.
- It is Important to observe that If the source file is deleted then the symbolic link becomes useless.
- Incases of the Network filesystem issues leading to unavailability of softlinks.
It is also Essential to understand about the Hardlinks to get an overall understanding.
Creating a hard link is a simple operation using ln
command with no options
Sample Command:
$ ln /path/to/source/ /path/to/HardLink/
So lets start of by creating a hard link of our file /var/www/html/index.html
[vamshi@linuxcent linuxcent]$ ln /var/www/html/index.html /tmp/index-hl.html
The command ls -il
lists the inode number of the files.
[vamshi@linuxcent ]$ ls -i 33557752 index-hl.html 33557752 index.html
So to conclude, The hard linking results in the same inode number, howmany ever times the hardlink of same file is created.
The data continues to persists in the same storage location on the filesystem even if one of the hardlink file is deleted.
As long as the inode number is identical on the files, no filename change matters to the filesystem.
There will be no change in Hardlink behaviour.
Let’s add some content to the hardlink file here and see the Demonstration
[vamshi@linuxcent ]$ echo "We are updating the file to check out the Hardlinks
" >> /tmp/index-hl.html
We are updating the file to check out the Hardlinks
The new line is added in the original file.
[vamshi@linuxcent linuxcent]$ cat index.html Welcome to LinuxCent.com We are updating the file to check out the Hardlinks
Content manipulations to either of the files will be treated as a same file.
How to Identify how many times a particular file was linked ?
Note that Linux Command ls -li
provides the actual link aggregate count information in the fourth column represented by the number 2
here, which means that it has a second hardlink reference and both the files are interchangeable.
And It should be noted that a file has a link count of 1
by default as it references itself
$ls -li 33557752 -rw-rw-r--. 2 vamshi vamshi 59 Apr 8 19:48 index-hl.html 33557752 -rw-rw-r--. 2 vamshi vamshi 59 Apr 8 19:48 index.html
In case either one of the file is deleted, the other file survives and continues to function properly.
Lets see some hard facts on the Hardlinks.
- Hardlinks can’t be created to Directories.
- They do not span across filesystems.