Linux下的硬链接和软连接

来源:互联网 发布:sql 试图的意义 编辑:程序博客网 时间:2024/05/21 21:46

      首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。
  链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。

总之:

        硬链接说白了是一个指针,指向文件索引节点系统并不为它重新分配inode

        建立软链接就是建立了一个新文件当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

通过实际操作来辨别softlink和hardlink的区别:

首先我们在/home/下建立了一个文件source.file

[root@wang home]# ll
total 8
-rw-r--r--  1 root root 26 Dec  6 12:07 source.file

接着分别建立两种连接:
[root@wang home]# ln source.file hardlink.file        ----------------- hardlink
[root@wang home]# ln -s source.file softlink.file     ----------------- softlink
建好连接文件之后,我们用ll命令查看一下有什么不一样的地方:

[root@wang home]# ll
total 20
-rw-r--r--  2 root root 26 Dec  6 12:07 hardlink.file                          ----------------- hardlink
lrwxrwxrwx  1 root root 11 Dec  6 12:08 softlink.file -> source.file     ----------------- softlink
-rw-r--r--  2 root root 26 Dec  6 12:07 source.file
我们可以看到软连接和硬连接在四个地方不同:

1,文件类别上,hardlink显示的是正常的普通文件,而softlink生成的文件显示的是一个连接文件,并且操作权限也不一样;

2,上面输出的第二列也就是连接数不一样;

3,文件的大小不一样;hardlink生成的文件和原文件一模一样,而softlink只是一个符号连接。

4,softlink生成的文件有个指向-〉原文件的标志

接着我们用ll  -i命令看一下,-i能显示出文件的inode号

[root@wang home]# ll -i
total 20
652046 -rw-r--r--  2 root root 26 Dec  6 12:07 hardlink.file
651589 lrwxrwxrwx  1 root root 11 Dec  6 12:08 softlink.file -> source.file
652046 -rw-r--r--  2 root root 26 Dec  6 12:07 source.file
可以看到hardlink生成的文件和原文件的inode一样,而连接数是2了;硬连接指向的是节点(inode),而软连接指向的是路径(path);所以当删除原文件,hardlink.file能正常使用而softlink.file则提示出错

总结:

(1)由于不同的分区会有相同的inode及硬连接的特殊性和文件系统的可卸载性,导致硬连接不容许跨文件系统(分区)!而 soft link 具有完整的 pathname,所以他可以跨越不同文件系统。

(2)硬连接不会建产新的inode,硬连接不管有多少个,都指向的是同一个inode节点,只是新建一个hard link会把结点连接数增加,只要结点的连接数不是0,文件就一直存在,不管你删除 的是源文件还是连接的文件。只要有一个存在,文件就存在(其实也不分什么源文件连接文件的,因为他们指向都是同一个 inode节点)。当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改 。软链接不直接使用inode节点号作为文件指针,而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.

(3)软连接可以对一个不存在的文件名进行连接。

(4)软连接可以对目录进行连接。

     ln -s source dist        # 建立软连接 
    ln source dist           # 建立硬连接

创建软连接不写绝对路径,那么源文件和目标文件必须在同一个目录下才能找到,否则有错误

软连接:windows下快捷方式
硬链接:同一文件的备份文件
多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允
许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
硬链接文件有两个限制
1)、不允许给目录创建硬链接;
2)、只有在同一文件系统中的文件之间才能创建链接。


0 0