Linux关于硬链接的一些知识点以及如何查找文件对应全部的硬链接文件

发布时间 2023-03-24 17:38:37作者: PiscesCanon

 

Linux关于硬链接的一些知识点以及如何查找文件对应全部的硬链接文件

 

  1. 软链接相当于windows里边的快捷方式,软链接文件和源文件是两个不同的文件,通过软链接可以直接访问(跳到)到源文件。
  2. 硬链接和源文件本质是同一个文件,只不过可以名字或者位置不一样,实际上创建一个硬链接之后两者地位相同了,无所谓谁是硬链接文件,或者说互为硬链接
    因为本质是同一个文件所以占用空间不会增加,在最后一个文件被删除之前就算删除其他硬链接文件也不会真正删除掉文件。
    但是对其中一个文件做修改,其他文件也受影响,因为本质是同一个文件。包括权限,属主的修改也会影响。
  3. 不能对文件夹使用硬链接
  4. 更多细节百度,提供一个地址:https://www.cnblogs.com/duoruaimi4/p/16336798.html

 

问题1:一个文件有多少个硬链接?

[root@dev-app81 20230324]# touch test.sql
[root@dev-app81 20230324]# ln test.sql test.hardlink
[root@dev-app81 20230324]# ll -i
total 0
67896251 -rw-r--r-- 2 root root 0 Mar 24 17:18 test.hardlink
67896251 -rw-r--r-- 2 root root 0 Mar 24 17:18 test.sql
[root@dev-app81 20230324]# stat test.sql
  File: ‘test.sql’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d      Inode: 67896251    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-03-24 17:18:02.531700220 +0800
Modify: 2023-03-24 17:18:02.531700220 +0800
Change: 2023-03-24 17:19:26.097694274 +0800
 Birth: -
[root@dev-app81 20230324]# stat test.hardlink 
  File: ‘test.hardlink’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d      Inode: 67896251    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-03-24 17:18:02.531700220 +0800
Modify: 2023-03-24 17:18:02.531700220 +0800
Change: 2023-03-24 17:19:26.097694274 +0800
 Birth: -

 

 

ll -i出现信息中,权限位后边的数字代表硬链接文件数,次数为2

stat “文件” 出现的信息中,Links:2更直观可以看出来。

 

问题2:如何查找文件所有的硬链接文件位置

根据inode查找,inode信息获取:

ll -i出来结果的第一列即是inode号

stat “文件”出来结果的Inode:xxxx 即是inode号

查找:find / -inum "inode号"

示例:

[root@dev-app81 20230324]# stat test.hardlink 
  File: ‘test.hardlink’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d      Inode: 67896251    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-03-24 17:18:02.531700220 +0800
Modify: 2023-03-24 17:18:02.531700220 +0800
Change: 2023-03-24 17:19:26.097694274 +0800
 Birth: -
[root@dev-app81 20230324]# find / -inum 67896251
/root/daily/20230324/test.sql
/root/daily/20230324/test.hardlink