1>首先什么是链接?
链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的 访问权限 ,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。
2>硬链接
硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
3>软链接(符号链接)
软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)。
4> 硬链接与软链接的区别;
硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接。
( 1 )软连接可以跨文件系统,硬连接不可以
( 2 )硬连接不管有多少个,都指向的是同一个 I 节点,会把结点连接数增加,只要结点的连接数不是 0 ,文件就一直存在不管你删除的是源文件还是连接的文件。只要有一个存在文件就存在。 当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用 i 节点号作为文件指针 , 而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的 i 节点 , 并在磁盘上有一小片空间存放路径名。
( 3 )软连接可以对一个不存在的文件名进行连接 。
( 4 )软连接可以对目录进行连接。
1、硬链接与软连接(Linux文件相关)
硬链接:(克隆)格式:# ln 源文件 目标文件
a、ln 创建
b、文件的权限后面的那个数字就表示硬链接的个数
c、当其中一个硬连接的文件改变了,与其硬链接的所有文件也会跟着改变
d、当删除其中一个硬链接文件时,硬链接文件数减一,其他文件仍存在
e、硬链接文件的 inode(索引结点) 相同
f、硬链接不能为目录创建,只有文件能创建硬链接
g、当把硬链接的源文件删除之后,其他的硬链接文件内容还可以访问
h、硬连接的文件所属种类相同
软连接:(又称为:符号链接)格式:# ln -s 源文文件或目录 目标文件或目录
a、ln -s 创建
b、既可以为文件创建软连接文件也可以为目录创建软链接目录
c、创建的软连接的文件或目录的 inode 与元文件或目录的 inode 不同
d、源文件或目录的类型 与 常见的软连接的类型不同 软连接文件或目录的类型为 l...
e、源文件 与 软连接文件的权限不同
f、源文件 与 软链接 的 硬链接个数相同 都为1
g、修改(或访问、创建)时间不同;
h、软连接只是源文件的一个标记,当源文件删除之后,(链接文件不能独立存在)他的软连接文件名虽然存在,但是文件内容已经不能再被访问了
i、当修改软连接文件时,源文件也会跟着改变
j、我们可以看到软链接文件,其实只是源文件的一个标记,当源文件失去时,他也就不存在了。软链接文件只是占用了inode来存储软链接文件属性等信息,但文件存储是指向源文件的。
无论是软链接还是硬链接,都可以用rm来删除。rm工具是通用的。