• VMware

    Learn about VMware virtualization for its products like vsphere ESX and ESXi, vCenter Server, VMware View, VMware P2V and many more

  • Linux

    Step by step configuration tutorials for many of the Linux services like DNS, DHCP, FTP, Samba4 etc including many tips and tricks in Red Hat Linux.

  • Database

    Learn installation and configuration of databases like Oracle, My SQL, Postgresql, etc including many other related tutorials in Linux.

  • How to create Soft Link (Symlink) and Hard Link in Linux


    Well before moving ahead I hope you know about Symlinks in Linux and its both the types i.e Soft
    Link and Hard Link. I will just give a brief description on both the types of link.

    Soft Link
    • Using this only a link to the original file is created (shortcut).
    • The size of created shortcut is null.
    • If you delete the file then the created link (shortcut) won't work.
    • In case you delete the shortcut link then it won't affect the original file

    Hard Link
    • Another copy of the file is created.
    • Both the file have same inode no.
    • Any changes made in either of the file will appear on the other file.
    • Deleting any of the one file won't affect the other file.



    Creating Soft Link

    The syntax to be followed for creating soft links 
    # ln -s /path/to/source    /path/to/destination
    NOTE: You will have to give the complete path of source and destination file unless they both have to exist in the same directory.
    # echo 12345 > ~/myfile.txt
    Now we will create a soft link of this file in some other location
    # ln -s ~/myfile.txt /tmp/
    # cd /tmp
    # ls -l
    lrwxrwxrwx 1 root   root       16 May 20 07:26 myfile.txt -> /root/myfile.txt
    
    Now as you see a symlink has been created which is shown by "Blue colour". 

    NOTE: In case if you see a red color symlink instead of blue then it means either the symlink is not created properly or the original file has been moved or deleted.






    • Now let us check the difference between both the files.
    # stat ~/myfile.txt
    File: `myfile.txt'
    Size: 6               Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 20152421    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2013-05-20 07:24:13.000000000 +0530
    Modify: 2013-05-20 07:24:12.000000000 +0530
    Change: 2013-05-20 07:24:12.000000000 +0530
    # stat /tmp/myfile.txt
    File: `/tmp/myfile.txt' -> `/root/myfile.txt'
    Size: 16              Blocks: 0          IO Block: 4096   symbolic link
    Device: fd00h/64768d    Inode: 22479090    Links: 1
    Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2013-05-20 07:26:06.000000000 +0530
    Modify: 2013-05-20 07:26:03.000000000 +0530
    Change: 2013-05-20 07:26:03.000000000 +0530
    
    So both the inode no. seems to be different.

    • Let us check the size of both the files
    # du -sch ~/myfile.txt
    4.0K    /root/myfile.txt
    4.0K    total
    # du -sch /tmp/myfile.txt
    0       /tmp/myfile.txt
    0       total
    So, we can conclude that all the above mentioned points under soft link are true.


    Creating Hard Link

    The syntax to be followed for creating soft links
    # ln  /path/to/source  /path/to/destination
    # ls -l ~
    -rw-r--r-- 2 root root 6 May 20 07:24 myfile.txt
    
    # ln ~/myfile.txt /tmp/
    
    # cd /tmp
    # ls -l
    -rw-r--r-- 2 root root 6 May 20 07:24 myfile.txt
    So as we see there is no difference between both the files and hard to find out which one is the original file and which one is the created hard link.

    • Lets check the size of both the file
    # du -sch /tmp/myfile.txt
    4.0K    myfile.txt
    4.0K    total
    # du -sch ~/myfile.txt
    4.0K    /root/myfile.txt
    4.0K    total
    So it seems both the file is occupying the same size on the disk.

    • Let us try making some changes in any one of the file
    # echo 123 >> ~/myfile.txt
    
    # cat /tmp/myfile.txt
    12345
    123
    So the changes made in one file are reflected in another file as you can see above. I appended 1 line in the original file inside root and the same changes are reflected on the other file.




    • Let us check the inode number of both the file
    # stat ~/myfile.txt
    File: `/root/myfile.txt'
    Size: 10              Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 20152421    Links: 2
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2013-05-20 07:50:32.000000000 +0530
    Modify: 2013-05-20 07:50:28.000000000 +0530
    Change: 2013-05-20 07:50:28.000000000 +0530
    
    # stat /tmp/myfile.txt
    File: `/tmp/myfile.txt'
    Size: 10              Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d    Inode: 20152421    Links: 2
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2013-05-20 07:50:32.000000000 +0530
    Modify: 2013-05-20 07:50:28.000000000 +0530
    Change: 2013-05-20 07:50:28.000000000 +0530
    So as you see both use the same inode no. due to which any change made to 1 file is reflected on the other file.

    I hope I cleared all your doubt in case still you have any question feel free to comment for any query.
    Deepak Prasad

    is a techie and an author who is still trying to survive in this IT generation with very little knowledge he has on Linux/Unix, VMware, SAN Storage, Automation, networking etc

    You can follow him on Facebook or Google+


    Do you also have something to share here?
    Join GoLinuxHub Team as an Author, Click here for more information
    How to create Soft Link (Symlink) and Hard Link in Linux How to create Soft Link (Symlink) and Hard Link in Linux Reviewed by Deepak Prasad on Monday, May 20, 2013 Rating: 5

    1 comment:

    1. Awesome docs.. explained the things well... its very good for beginners as well as who is working in this profile ... Keep up the great work buddy ....

      ReplyDelete

    Powered by Blogger.