首页 » 信息技术 »

软链接,硬链接

2019年8月2日 / 11次阅读
Linux

Linux文件系统包括两种链接:硬链接(hard link)和软链接(soft link),软链接又称为符号链接(symbolic link)

硬链接(hard link)

硬链接实际上是一个指针,指向源文件的inode,系统并不为它重新分配inode。

硬链接不会生成新的inode,硬链接不管有多少个,都指向的是同一个inode节点,只是新建一个hard link会把结点连接数增加,只要结点的连接数不是0,文件就一直存在,不管你删除的是源文件还是连接的文件。只要有一个存在,文件就存在(其实就是引用计数的概念)。当你修改源文件或者链接文件任何一个的时候,其他的文件都会做同步的修改。

软链接(soft link,symbolic link

软链接最直观的解释:相当于Windows系统的快捷方式,是一个独立文件(拥有独立的inode,与源文件inode无关),该文件的内容是源文件的路径指针,通过该链接可以访问到源文件。所以删除软链接文件对源文件无影响,但是删除源文件,软链接文件就会找不到要指向的文件(可以类比Windows上快捷方式,你点击快捷方式可以访问某个文件,但是删除快捷方式,对源文件无任何影响)。

软链接和硬链接的区别

1. 软链接和源文件操作权限不一样;硬链接与源文件操作权限完全一致。

2. 软链接可以跨文件系统(分区);由于inode的限制以及文件系统的可卸载性,硬连接不容许跨文件系统。

3. 软连接可以对一个不存在的文件名进行连接(在有些Linux发行版中,这个时候的symbolic link file是红色并闪烁);硬链接不可以。

4. 软连接可以对目录进行连接;硬链接不可以。

测试硬链接

硬链接看起来就跟一个普通文件没有区别:

[xinlin@promote test]$ touch abc.txt
[xinlin@promote test]$ ln abc.txt 123.txt
[xinlin@promote test]$ ll
total 0
-rw-rw-r--. 2 xinlin xinlin 0 Aug  2 15:43 123.txt
-rw-rw-r--. 2 xinlin xinlin 0 Aug  2 15:43 abc.txt

123.txt和abc.txt看起来都是一样的。readlink命令对硬链接没有作用。

[xinlin@promote test]$ stat 123.txt
  File: ‘123.txt’
  Size: 12              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 50776048    Links: 2
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  xinlin)   Gid: ( 1000/  xinlin)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-08-02 15:44:27.222394632 +0800
Modify: 2019-08-02 15:44:23.184430498 +0800
Change: 2019-08-02 15:44:23.184430498 +0800
 Birth: -
[xinlin@promote test]$ stat abc.txt
  File: ‘abc.txt’
  Size: 12              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 50776048    Links: 2
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  xinlin)   Gid: ( 1000/  xinlin)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-08-02 15:44:27.222394632 +0800
Modify: 2019-08-02 15:44:23.184430498 +0800
Change: 2019-08-02 15:44:23.184430498 +0800
 Birth: -

这两个文件的Inode编号的一样的,Links数都是2。

修改这两个文件其中任何一个,都会对两个文件造成影响:

[xinlin@promote test]$ echo 'abc123' > 123.txt
[xinlin@promote test]$ cat abc.txt
abc123
[xinlin@promote test]$ echo '6789' >> abc.txt
[xinlin@promote test]$ cat 123.txt
abc123
6789

删除一个,另外一个依然存在:

[xinlin@promote test]$ rm abc.txt
[xinlin@promote test]$ ll
total 4
-rw-rw-r--. 1 xinlin xinlin 12 Aug  2 15:44 123.txt
[xinlin@promote test]$ stat 123.txt
  File: ‘123.txt’
  Size: 12              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 50776048    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  xinlin)   Gid: ( 1000/  xinlin)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-08-02 15:44:27.222394632 +0800
Modify: 2019-08-02 15:44:23.184430498 +0800
Change: 2019-08-02 15:56:03.658208697 +0800
 Birth: -

软链接就不测试了,用readlink命令可以查看软链接文件的指向。

以上就是对Linux文件系统的硬链接和软链接的介绍。

本文链接:https://www.maixj.net/ict/soft-hard-link-22314

相关文章

留言区


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top