一、概念
链接:一种对文件的引用,分为硬链接和软链接(符号链接)。
索引节点(inode):在Linux系统中,内核为每一个新创建的文件分配一个inode(索引结点),每个文件都有一个惟一的inode号,我们可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存,从而实现文件的快速访问。系统是通过索引节点(而不是文件名)来定位每一个文件。
硬链接和软链接区别:
1. 硬链接不会创建inode,即使用的inode都是一样的。软链接会创建新的inode。
2. 硬链接的访问属性和源文件一模一样,没有l的标识。软链接的访问属性写明了是l,且访问权限不能设置,只能是777,真正的权限取决于源文件。
3. 如果移动源文件,则软链接找不到,而硬链接则没有这个问题,因为软链接存的是文件的位置。
4. 硬链接是一种引用关系,一个源文件建立1个硬链接,引用计数加1,删除一个文件(硬链接文件或者源文件),引用计数减1,当引用计数为0时,真正删除文件。删除源文件软链接只是找不到了目标文件。
5. 不能创建目录的硬链接,不能在不同的文件系统的文件间建立硬链接,软链接则没有这些限制。
二、实践
1.创建一个源目录,为源目录创建一个子文件和子目录。
$ mkdir linktest
$ cd linktest
$ mkdir sd
$ echo “a” > sd/a.txt
$ mkdir sd/subsd
2. 创建2个源文件。
$ echo “test1” > sf1.txt
$ echo “test2” > sf2.txt
$ ls -il
total 8
523364 drwxrwxr-x. 3 user user 4096 Jun 20 12:30 sd