Linux 的硬链接与软链接

硬连接:
若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(见 图 2.hard link 就是 file 的一个别名,他们有共同的 inode),创建硬链接:
root@ubuntu:~# ln oldfile hardlink

root@ubuntu:~# link oldfile hardlink2

软链接:
若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块.创建软连接:
root@ubuntu:~# ln -s oldfile softlink

硬链接和软链接的特点和区别
由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

  • 文件有相同的 inode 及 data block;

  • 只能对已存在的文件进行创建;

  • 不能交叉文件系统进行硬链接的创建;

  • 不能对目录进行创建,只可对文件创建;

  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件。

软链接的创建与使用没有类似硬链接的诸多限制:

  • 软链接有自己的文件属性及权限等
  • 可对不存在的文件或目录创建软链接
  • 软链接可交叉文件系统
  • 软链接可对文件或目录创建
  • 创建软链接时,链接计数 i_nlink 不会增加
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)

在这里插入图片描述

相关命令
1.find
查找oldfile文件的硬链接
root@ubuntu:~# find . -samefile oldfile
./hardlink2
./oldfile
./hardlink
root@ubuntu:~# find -inum 48500016
./hardlink2
./oldfile
./hardlink

列出当前目录的软链接文件
root@ubuntu:~# find . -type l -li
48499918 0 lrwxrwxrwx 1 root root 7 Nov 27 19:20 ./softlink -> oldfile

2.stat
root@ubuntu:~# stat oldfile
File: ‘oldfile’
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 48500016 Links: 3
Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-27 17:14:17.858063930 -0800
Modify: 2018-11-12 20:39:46.230487500 -0800
Change: 2018-11-27 17:25:35.094075202 -0800
Birth: -
root@ubuntu:~# stat hardlink
File: ‘hardlink’
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 48500016 Links: 3
Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-27 17:14:17.858063930 -0800
Modify: 2018-11-12 20:39:46.230487500 -0800
Change: 2018-11-27 17:25:35.094075202 -0800
Birth: -
root@ubuntu:~# stat softlink
File: ‘softlink’ -> ‘oldfile’
Size: 7 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 48499918 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-27 19:20:40.070190128 -0800
Modify: 2018-11-27 19:20:36.594190070 -0800
Change: 2018-11-27 19:20:36.594190070 -0800

参考资料理解 Linux 的硬链接与软链接

猜你喜欢

转载自blog.csdn.net/qq_36412526/article/details/84578515