• 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.

  • Life always offers you a second chance ... Its called tomorrow !!!

    Monday, May 20, 2013

    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
    1. Using this only a link to the original file is created (shortcut).
    2. The size of created shortcut is null.
    3. If you delete the file then the created link (shortcut) won't work.
    4. In case you delete the shortcut link then it won't affect the original file

    Hard Link
    1. Another copy of the file is created.
    2. Both the file have same inode no.
    3. Any changes made in either of the file will appear on the other file.
    4. 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.

    Follow the below links for more tutorials:

    Configure Red Hat Cluster using VMware, Quorum Disk, GFS2, Openfiler
    Tutorial for Monitoring Tools SAR and KSAR with examples in Linux
    How to configure Samba 4 Secondary Domain Controller
    How to secure Apache web server in Linux using password (.htaccess)
    How to register Red Hat Linux with RHN (Red Hat Network )
    Red hat Enterprise Linux 5.5 Installation Guide (Screenshots)
    15 tips to enhance security of your Linux machine
    Why is Linux more secure than windows and any other OS
    What is the difference between "su" and "su -" in Linux?
    What is kernel-PAE in Linux?
    What is swappiness and how do we change its value?
    How to log iptables messages in different log file
    What are the s and k scripts in the etc rcx.d directories
    How to check all the currently running services in Linux
    How to auto start service after reboot in Linux
    What is virtual memory, paging and swap space?

    1 comments:

    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