在linux系统中,内核为每一个新创建的文件分配一个Inode(索引节点),每个文件都有唯一的inode号。文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存,从而实现文件的快速访问。
链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。有硬链接和软链接,软链接又称为符号链接
一、硬链接
实质上是一个指针,指向文件索引节点,系统并不为它重新分配inode。使用 ln 来创建
ln hello.c hello 建立hello.c的硬链接hello
特点:
1. 不允许给目录创建硬链接
2. 只有在同一个文件系统才能创建(不能跨文件系统)
例子: 为file1创建一个硬链接,file1的链接数目就会增加。当删除链接时,链接数减1,当链接数为0时,内核才会把文件内容从磁盘上删除。
二、软链接(符号链接)
使用 ln -s 来创建
ln -s hello.c hello 建立hello.c的软链接hello
特点:
1. 类似于windows中的快捷方式
2. 允许给目录创建软链接
3. 能跨文件系统
当file1创建一个软链接,file1的链接数目不会增加。源文件大小和链接文件大小是不一样的。
三、区别
对于硬链接 当修改链接文件或者源文件时,文件会被改变,因为其本质是一个指针。
对于软连接 删除链接文件对源文件无影响,但是如果删除源文件,链接文件就找不到要指向的文件。软链接有自己的inode,并在磁盘上有一小片空间存放路径名