Linux
中的链接类似于Windows
的快捷方式,也就是很多的链接文件(link file
)其实都指向同一个源文件(source file
)。
Linux
中链接文件又分为硬链接和软链接两种。
Linux硬链接
硬链接指通过索引节点来进行链接。在Linux
的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index
)。在Linux
中,多个文件名指向同一索引节点是存在的。一般这种链接就是硬链接。
硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止误删的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。
硬链接特点如下:
- 文件有相同的
inode
及data block
; - 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建;
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同
inode
号的文件。
具体命令如下:
ln 源文件 目标文件
案例演示一:
为当前目录下的文件testFile
创建一个硬链接testFileLink
,可以使用如下命令:
ln testFile testFileLink
在ls
结果的最左边一列,是文件的inode
值,你可以简单把它想成C
语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。可以看到,这两个文件就如同一个文件一样,inode
值相同,都指向同一个区块。
Linux软链接
软链接文件有类似于Windows
的快捷方式。它实际上是一个特殊的文件。在符号链接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。
软链接特点如下:
- 源文件和目标文件有不相同的
inode
及data block
; - 软链接没有硬链接的限制,可以对目录文件做符号链接;
- 软链接可以在不同文件系统之间做软链接;
- 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是
l
; - 符号链接的大小是其链接文件的路径名中的字节数;
具体命令如下:
ln -s 源文件 目标文件
案例演示一·:
为当前目录下的文件testFile
创建一个软链接myLink
,可以使用如下命令:
ln -s testFile myLink
使用ls -li
查看两个文件的详细信息,可以看到两个文件的inode
节点号不同,文件myLink
的类型为l
,可以看到myLink
是指向文件testFile
的,同时myLink
文件的大小为8
,正是文件名testFile
的字符个数。
案例演示二:
为当前目录下的目录testDir
创建一个软链接myDirLink
,可以使用如下命令:
ln -s testDir myDirLink