To simply put it, a Unix link is a convenient way to access data of a file. It is similar to shortcuts in windows. But in UNIX there are two types of links, soft link and hard link. To understand the difference between these two, we should first know some basics of Unix file structure.
In UNIX file system, a file contains two parts, data part and filename part. Filename part contains the file name and indoe. Data part contains the actual data stored in the file. Inode is a data structure that contains the information about the file like permissions, group, owner, pointer to the data part etc….Each inode (and hence the data it points to) is identified by an inode number. Data part contains the actual data stored in the file. A user accesses a file using its name while the underlying file system access it with its inode number.Different files can point to the same inode number. These files are called hard links. They will have different names and may be located in different paths, but under the same file system. Hard links can’t be created across different file systems, this is because the inode number is specific to a file system not the OS as a whole. Each file system maintains a table of inodes within that file system.
A soft link is a special file that contains the file system path to another file as its data. But as soft link (symlink) is a special file, any read/write/modify operation on this file will be redirected to the target file. Since symlinks refer to their target using absolute path and file name, it can cross file system boundaries and can be located anywhere. Soft links can point to both files and directories.Difference b/w soft and hard links
Soft link | Hard Link |
Points to file name of original file | Points to inode of original file |
Can link between file systems | Can link only within same file system |
Both for file & directory | Only for files |
Default permission 777 | Default permission 644 |
Can’t access data after original file is deleted | Can access data even after original file is deleted |
Can’t change owner/group/permission | Can change owner/group/permission |
Inode number not same as original file | Inode number same as original file |
Now create a text file
[root@penguin007 links]# touch link-test.orig
[root@penguin007 links]# echo “Original file created” > link-test.orig
[root@penguin007 links]# cat link-test.orig
Original file created
The command to create link is "ln". Let us create a hard link to the file link-test.orig.
[root@penguin007 links]# ln link-test.orig link-test.hardNow let us create a soft link to the file link-test.orig.
[root@penguin007 links]# ln -s link-test.orig link-test.soft
[root@penguin007 links]# ls -li
total 8
163774475 -rw-r–r– 2 root root 22 Jul 19 13:38 link-test.hard
163774475 -rw-r–r– 2 root root 22 Jul 19 13:38 link-test.orig
163774476 lrwxrwxrwx 1 root root 14 Jul 19 13:47 link-test.soft -> link-test.orig
Now you can make changes to the original file/soft link/hardlink and the change will be reflected on all others. This is because all of these are pointing to the same data location
Edit from soft link[root@penguin007 links]# echo “Change from soft link” > link-test.soft
[root@penguin007 links]# cat link-test.orig
Change from soft link
[root@penguin007 links]# cat link-test.hard
Change from soft link
Edit from hard link[root@penguin007 links]# echo “Change from hard link” > link-test.hard
[root@penguin007 links]# cat link-test.orig
Change from hard link
[root@penguin007 links]# cat link-test.soft
Change from hard link
Edit from original file[root@penguin007 links]# echo “Change from original” > link-test.orig
[root@penguin007 links]# cat link-test.soft
Change from original
[root@penguin007 links]# cat link-test.hard
Change from original
From the output of "ls -li" you can observe following points.Both the original file and hard link are having same inode (163774475 - column 1 ). In fact both these files are referred to as hard links and you can't distinguish which file is original and which one is link - there is no need to do that either.
Note the permission on the files, hard links are having standard 644 permissions while soft link has 777 permission. Hard links are treated as regular files but soft links are treated as links- note the first character in the 2nd column of "ls" output above ("-" for regular file/hard link and "l" for soft link)When you change permission/ownership of a hard link the change is reflected on all hard links. But when you change permission/ownership of a softlink the change is applied to the original file (and its hard links if any) while soft link retains the permission and ownership.
[root@penguin007 links]# chmod 755 link-test.hard[root@penguin007 links]# ls -li
total 8
163774475 -rwxr-xr-x 2 root root 22 Jul 19 13:38 link-test.hard
163774475 -rwxr-xr-x 2 root root 22 Jul 19 13:38 link-test.orig
163774476 lrwxrwxrwx 1 root root 14 Jul 19 13:47 link-test.soft -> link-test.orig
[root@penguin007 links]# chmod 644 link-test.soft
[root@penguin007 links]# ls -li
total 8
163774475 -rw-r–r– 2 root root 22 Jul 19 13:38 link-test.hard
163774475 -rw-r–r– 2 root root 22 Jul 19 13:38 link-test.orig
163774476 lrwxrwxrwx 1 root root 14 Jul 19 13:47 link-test.soft -> link-test.orig
[root@penguin007 links]# chown safeer link-test.orig
[root@penguin007 links]# ls -li
total 8
163774475 -rw-r–r– 2 safeer root 22 Jul 19 13:38 link-test.hard
163774475 -rw-r–r– 2 safeer root 22 Jul 19 13:38 link-test.orig
163774476 lrwxrwxrwx 1 root root 14 Jul 19 13:47 link-test.soft -> link-test.orig
[root@penguin007 links]# chown root link-test.soft
[root@penguin007 links]# ls -li
total 8
163774475 -rw-r–r– 2 root root 22 Jul 19 13:38 link-test.hard
163774475 -rw-r–r– 2 root root 22 Jul 19 13:38 link-test.orig
163774476 lrwxrwxrwx 1 root root 14 Jul 19 13:47 link-test.soft -> link-test.orig
The third column in the output shows the hard links count, ie; how many hard links point to that file (2 in our case).
Links do not cause any additional hard disk usage. We can check it now:[root@penguin007 links]# du -hs ./*
4.0K ./link-test.hard
0 ./link-test.soft
You may note that only one file (that comes alphabetically first) of the hard links is displayed in disk usage result (this happens if both hard links are in the same directory)Now let us delete the original file.
[root@penguin007 links]# rm -rf link-test.orig
[root@penguin007 links]# cat link-test.hard
Change from hard link
[root@penguin007 links]# cat link-test.soft
cat: link-test.soft: No such file or directory
As you can see, soft link will not work if the original file is deleted, because it points to the name of the original file. But hard links are pointing directly to the inode, so it can continue accessing the data. When a file has multiple hard links, the data part of the file will not be deleted until all the hard links to the file are deleted. The count of hard links is stored in the inode which will be decremented every time a hard link to that data is deleted.
nhân sâm này tuy nhỏ bé, nhưng những sợi râu xung quanh của nó thì tinh
ReplyDeletemịnh dị thường, trên thân cây bị một tấm giấy vàng dán lên, nó che đi
linh khí của cây nhân sâm.
Lc này Tống Hành đã tới gần, hắn cười âm hiểm muốn vặn gẫy cổ Vương
Lâm, đột nhiên thân thể hắn run lên, phảng phất như bị một bàn tay vô
hình túm được. Thân thể bị vứt về phía sau, nằm xõng xoài trên mặt đất
một hồi lâu vẫn không thể dứng dậy.
Một màn quỷ dị trước mắt làm cho mọi người đều ngây người ra, Vương Lâm
dịch vụ kế toán thuế trọn gói trung tâm kế toán tại tphcm ngoduong học kế toán tại cầu giấy kế toán cho giám đốc chung cư newskyline văn quán chung cư goldmark city học kế toán phần mềm misa meomeo007 01embesexy trung tâm kế toán tại hà đông chung cư hà nội trung tâm kế toán tại thanh xuân dịch vụ kế toán thuế dịch vụ báo cáo tài chính
khẽ tách những tua của nhân sâm ra, nhìn kỹ một lúc mới thở dài nói:
- Nhìn thấy lão bằng hữu, sao còn không ra gặp mặt?
Một trận tiếng vang sàn sạt vang lên, từ trên cây cổ thụ cách đó không
xa, người thanh niên lạnh lùng chậm rãi xuất hiện, thân thể hắn giống
như có một cỗ khí lưu vô hình đỡ lấy, đám hắc y nhân trên đường đi tới