浅谈软连接和硬链接

Linux 把每个文件的权限与属性记录在 inode("索引节点:index node ") 中,而且每个文件占用一个独立的 inode 表格,该表格的默认大小为 128 字节。里面记录着如下信息 :
1 文件的访问权限(read、write、execute)
2 该文件的所有者与所属组(owner、group)
3 该文件的大小(size)
4 该文件的创建或内容修改时间(ctime)
5 该文件的最后一次访问时间(atime)
6 该文件的修改时间(mtime)
7 文件的特殊权限(SUID、SGID、SBIT)
8 该文件的真实数据地址(point)。

软连接

类似windows下的“快捷方式”,占有独立的inode和文件。是个独立的文件,文件类型为l。 即软链接。能链接目录,也能跨文件系统链接,源文件删除后,软链接失效。

~/test$ ls -li
总用量 4
22829571 lrwxrwxrwx 1 huatai sztozed  8 1222 17:28 testSoftLink -> test.txt
22829568 -rw-r--r-- 1 huatai sztozed 22 1222 17:27 test.txt

如图可以看到,软连接的inode(第一列),和源文件的inode是不一样的,这表明,软连接是个独立的文件,它本质上是个文本文件,其中包含源文件的位置信息。因此,删除软连接,对源文件不会有影响,但是,删除源文件,软连接也会失效

~/test$ cat testSoftLink
This is file test.txt
~/test$ rm test.txt
~/test$ cat testSoftLink
cat: testSoftLink: 没有那个文件或目录

硬链接

指向源文件inode的指针,系统不会为它单独分配inode和文件。所以硬链接和源文件实际是同一个文件,只是名字不同。

~/test$ ls -li
总用量 8
22829571 -rw-r--r-- 2 huatai sztozed 22 1222 17:42 testHardLink
22829571 -rw-r--r-- 2 huatai sztozed 22 1222 17:42 test.txt

可以看到,硬连接和源文件的inode一致,这表明,硬链接不是一个文件,他和源文件一样,只是指向文件inode的指针。所以,删除源文件或者硬连接后,文件内容依旧可以访问。因为,Linux中,只有inode连接数为0,它才会被彻底删除。
如下,可通过stat指令查看文件inode信息

~/test$ stat test.txt
  文件:test.txt
  大小:22              块:8          IO 块:4096   普通文件
设备:35h/53d   Inode:22829571    硬链接:2
权限:(0644/-rw-r--r--)  Uid:( 1004/  huatai)   Gid:( 1001/ sztozed)
最近访问:2021-12-22 17:42:31.987541210 +0800
最近更改:2021-12-22 17:42:31.987541210 +0800
最近改动:2021-12-22 17:42:50.843323950 +0800
创建时间:-

可以看到,硬连接数为2,因此可以把文件名,也理解为硬连接。此时删除源文件,硬连接数变为1。依旧可以通过硬连接访问文件内容。

~/test$ rm test.txt
~/test$ stat testHardLink
  文件:testHardLink
  大小:22              块:8          IO 块:4096   普通文件
设备:35h/53d   Inode:22829571    硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1004/  huatai)   Gid:( 1001/ sztozed)
最近访问:2021-12-22 17:42:31.987541210 +0800
最近更改:2021-12-22 17:42:31.987541210 +0800
最近改动:2021-12-22 17:49:56.950390580 +0800
创建时间:-
~/test$ cat testHardLink
This is file test.txt

可以理解为,文件名和硬连接都是两个指向文件inode的指针,删除任何一个,都可以通过另一个访问文件内容,两个都删除,文件内容被彻底删除。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值