硬链接和软链接
- 硬链接
一个inode号可以和任意多个硬链接对应,当所有硬链接都删除后,此inode号也将由系统自动删除,ls -ial命令的第三列即为和当前inode号关联的硬链接数目。创建硬链接的命令为
root@vrlab726-desktop:~/Desktop/test# ln file fileHardLink
root@vrlab726-desktop:~/Desktop/test# ls -ial
7668672 drwxr-xr-x 2 root root 4096 2011-12-14 20:19 .
6447440 drwxr-xr-x 9 root root 4096 2011-12-14 19:27 ..
7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 file
7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 fileHardLink
从中可以看出硬链接都指向了同一个inode条目,因此所占用的空间相同。然而,Linux系统中的硬链接有两个限制:
1.硬链接只能链接到文件,而不能链接到文件夹。尽管.和..是系统创建的链接到目录的硬链接,但不允许用户(即使是root账户)创建链接到目录的硬链接。
2.硬链接不能跨文件系统。
硬链接可以认为不是一个文件,它只是实际文件的一个别名,它的作用是防止真实文件被误操作,给一个文件建立硬链接后,他们互为别名,删除其中任意一个,只会删除该别名,实际文件并不会被删除。由于只是别名没有任何其他信息,所以并不占用原始文件大小的磁盘空间。
- 软链接(符号链接)
实际上,软链接比硬链接更为常用,符号链接是一种特殊的文件类型,它只是通过文件名链接到另一个文件,而不是直接链接到inode。如果链接的目标文件被删除了,那么会导致链接到该目标文件的所有软链接断开,不再可用。创建软连接的命令如下:
root@vrlab726-desktop:~/Desktop/test# ln -s file fileSoftLink
root@vrlab726-desktop:~/Desktop/test# ls -ial
7668672 drwxr-xr-x 2 root root 4096 2011-12-14 20:25 .
6447440 drwxr-xr-x 9 root root 4096 2011-12-14 19:27 ..
7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 file
7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 fileHardLink
7668708 lrwxrwxrwx 1 root root 4 2011-12-14 20:25 fileSoftLink -> file
硬链接基于inode实现,而软链接基于名称(或路径)实现;硬链接只允许用户创建链接到文件的硬链接,而软链接既可链接到文件又可链接到目录;硬链接不允许跨文件系统(因不同文件系统中的inode号可能相同),而软链接由于通过路径实现,所以可以跨文件系统。