硬链接(hard link)和符号连接(symbolic link)的区别:
通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小但是事实上却不占任何空间。 符号链接可以理解为类似windows一样的快捷方式。
名词解释
链接文件有两种方式,符号链接和硬链接。
symlink 符号链接文件
符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,也可以链接不同文件系统的文件。甚至可以链接不存在的文件,这就产生一般称为“断裂”的问题(现象),还可以不断的循环链接自己。
用ln -s 命令可以生成一个符号链接,如下所示:
#ln -s source_file softlink_file
在对符号链接进行读写操作的时候,系统会自动把该操作转换为对源文件的操作。但是删除链接文件时,系统仅仅删除符号链接文件,而不删除源文件本身。
hardlink 硬链接文件
硬链接的命令是:
#ln existfile newfile
硬链接文件有两个限制
1)不允许给目录创建硬链接
2)只允许在同一文件系统中的文件之间才能创建链接
对于硬练级文件进行读写和删除操作的时候,结果和符号链接相同。但是如果我们删除硬链接文件的源文件,硬链接文件仍存在,而且保留了原有的内容。
两者之间的区别
hard link
硬链接是通过索引节点(inode index
)来进行链接的。在linux
的文件系统中,保存在磁盘分区中的文件不管是什么类型都给他分配一个编号,称为索引节点号(inode index
)。
在linux中,多个文件名指向同一索引点是存在的。一般这种链接是硬链接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,起到防止“误删”的功能。
因为对应目录的索引节点有一个以上的链接,只删除一个链接并不影响索引节点本身和其他的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,至此文件才被真正删除。
symlink
符号链接文件有点类似于windows的快捷方式。他实际上是特殊文件的一种。在符号链接中,文件实际上是一个文本文件,他包含了另一个文件的位置信息
。
总结
符号链接(symbolic link
)在建立的时候建立了一个新的inode
,并记录了指向源文件inode
的路径。所以symbolic的inode number
跟原始档案的inode number
是不一样的。这也是为什么symbolic link
能够跨越不同文件系统的原因。符号链接建立了新的inode number,所以它是一个真实的文件并占有一定的磁盘空间。另外对symbolic link的操作除了删除都会直接对源文件进行操作。
硬链接(hard link
)并没有新建立inode
,而是新建了一个内容以及inode number
、hard link
文件名和其他相关资讯的一个directory entry
,所以hard link
的inode number
跟源文件的inode number
是一样的。因为一个文件系统有着相同的inode number
,所以hard link
是不可以跨文件系统创建的。也可以将hard link
理解为不是一个文件,把它看成是同一个inode
的别名,建立hard link
后他和源文件互为别名,删除其中任何一个,inode
都不会释放。只有指向同一inode
的文件名都删除后,inode
才释放。hard link
实际上是不占空间的。