Linux hard links and soft links

Source: Internet
Author: User

There are two special "files" for soft links and hard links in Linux systems.

A soft link can be thought of as a shortcut in Windows that lets you quickly link to a target file or directory.

Hard links generate new files through the inode of the file system, rather than generating new files.

The creation method is simple:

    1. Soft link (symbolic link) ln-s source target

    2. Hard link (entity link) ln source target

Inode

To explain clearly the difference between the two and the connection need to first clear the Linux file system Inode this thing. When partitioning and formatting partitions, the entire partition is divided into two parts, the Inode and data block (where the actual data is placed in the data region), which is the unique identifier (directory, archive) file in a file system. When you need to access this file, you must first locate and read the inode of the file. The Inode stores many important parameters of the file, where the unique identifier is called Inumber, the other information has the creation time (CTime), the modified time (mtime) , the file size, the owner, the user group belonging to, read and write permissions, the data block number and other information.

650) this.width=650; "src=" http://pic002.cnblogs.com/images/2012/364912/2012031910100478.jpg "style=" border:0px; Margin-left:auto;margin-right:auto; "/>

The number of inode is usually arranged according to the purpose of the partition (this is another topic), such as a large number of files and small files, you need to increase the inode large so that all files can be indexed. Otherwise, the partition is not full and cannot be written to any files.

Catalog files and archive files

Catalog file: Record the file name under this directory

Archive: Record actual file data

The inode itself does not record the file name and the file name is recorded in the block of the directory file, so adding, deleting, and changing the file name is related to the W permission for the directory. So when we want to read a file, we must go through the inode and block of the directory before we can find the inode number of the file to be read, and finally read the data in the correct file Block . the system locates each file through an index node rather than a file name.

Directory Inode (Permissions are met?) ) = Directory block and file Inode (to satisfy permissions?) ) = File Block

Hard Links

650) this.width=650; "src=" http://pic002.cnblogs.com/images/2012/359867/2012061121030539.jpg "style=" border:0px; " />

Multiple file names correspond to the same inode, and a hard link simply adds a file name to the associated record that links to an inode number in a directory. If you delete any of the files, the Inode and the block are still present, and you can still read the correct profile data through another file name. In addition, regardless of which file name to edit, the final result will be written in the same inode and block, so the data can be modified.

Soft connection

650) this.width=650; "src=" http://pic002.cnblogs.com/images/2012/359867/2012061121135267.jpg "style=" border:0px; " />

A soft connection is the creation of a separate file, and this file will let the data read to its link file name , because only as a point of action , so when the source file is deleted, the soft connection file cannot be opened, because the original file name cannot be found. The content of the link file is only a file name, linked to the correct directory according to the file name to further obtain the inode of the target file, and finally be able to read the correct data. If the original file name of the target file is deleted then the whole link will not go down.

Here is an example of a hard link and a soft link.

Now there are two files in the directory, one is called AAA, and the other is called BBB.
Reference
$ ls-il
963922-rw-r--r--1 Ocean Ocean 2007-05-18 15:46 AAA
963923-rw-r--r--1 Ocean Ocean 2007-05-18 15:46 BBB


First make a hard link to AAA.
Reference
$ ln AAA Aaahard
$ls-il
963922-rw-r--r--2 Ocean Ocean 2007-05-18 15:46 AAA
963922-rw-r--r--2 Ocean Ocean 2007-05-18 15:46 Aaahard
963923-rw-r--r--1 Ocean Ocean 2007-05-18 15:46 BBB

Here we note that before creating a link, the number of links displayed by AAA is 1, after the link is created
The number of links between 1.AAA and Aaahard becomes 2.
The inode numbers for the 2.AAA and Aaahard are the same, all 963922.
The 3.AAA and Aaahard display the same file size, which is 92B.
The results of the operation of the LN command are visible:AAA and Aaahard are two names of the same file , they have the same index node number and file attributes, and a hard link to file AAA is to create a new pointer on the current directory for the AAA File Index node. You can delete any one of them, such as RM AAA, and delete only one pointer at a time, minus one at a time, and the kernel will delete the contents of the file from the disk only if all pointers to the contents of the file, that is, the number of links is reduced to 0 o'clock.

Although hard links save space and are the traditional way for Linux systems to consolidate file systems, there are some shortcomings:
1. You are not allowed to create hard links to directories.
2. It is not possible to create links between files in different file systems.
because the inode is the index value of the file in the current partition, it is relative to this partition, and of course it cannot cross the file system.

Then we do a soft link to the BBB, soft link overcomes the lack of hard links, without any file system restrictions, any user can create a symbolic link to the directory. It is now more widely used, it has greater flexibility, and can even link files across different machines and networks.
Reference
$ ln-s BBB Bbbsoft
$ ls-il
Total dosage 0
963922-rw-r--r--2 Ocean Ocean 2007-05-18 15:46 AAA
963922-rw-r--r--2 Ocean Ocean 2007-05-18 15:46 Aaahard
963923-rw-r--r--1 Ocean Ocean 2007-05-18 15:46 BBB
963924 lrwxrwxrwx 1 Ocean Ocean 3 2007-05-18 15:47 Bbbsoft-BBB

From the results of the link above can be seen in soft links and hard links , the difference is not only conceptually, in the implementation is also completely different.

Difference:
1. Hard link Original file/link file common an inode number, stating that they are the same file, and the soft link original file/link file has a different inode number, indicating that they are two different files;
2. The soft link in the file attribute explicitly writes out is the link file, and the hard link is not written out, because in essence the hard link file and the original file is completely equal relationship;
3. The number of links is not the same, the number of links to soft links will not increase;
4. File size is not the same, hard-link file display size is the same as the original file. The size of the soft link shown here is different from the original file, the BBB size is 95B, and the Bbbsoft is 3 B. because BBB has a total of 3 characters

5. soft links do not have any file system restrictions, any user can create a symbolic link to the directory

In short, creating a soft link is the creation of a new file . When accessing a linked file, the system will find that he is a link file that reads the link file to find the file that is actually being accessed.

of course, soft links also have the disadvantage of hard links: because the link file contains the path information of the original file, so when the original file from one directory to another directory, and then access the linked file, the system will not be found, and the hard link does not have this flaw, you want to move how to move And it wants the system to allocate additional space for creating a new index node and saving the path to the original file.


Linux hard links and soft links

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.