linux 下的使用 ln 创建 软链接 和 硬链接

时间:2022-04-20 12:06:13

linux 下的一个指令 ln

作用: 创建软链接或者硬链接

Linux 系统下每创建一个文件,系统都会为此文件生成一个 index node 简称(inode) ,而每一个文件都包含用户数据(user data) 与 元数据(metadata)

用户数据里记录了文件的真正内容.

元数据里记录的是文件的附加属性,如 文件大小,创建时间,所有者等,其中 上面提到的 index node 就保存在元数据中.在linux 中文件名并不是文件的唯一标识,index onde 才是唯一标示,系统查找文件也是通过 index node 来查找内容数据块.

如何查看文件的 index node:

➜  /Users/zhangzhi  >ls -i
31615656 AndroidStudioProjects 30836545 go
 1152719 Applications          49115578 images
31827389 CNode                 13208576 ktsgs.zip
  595399 Desktop               44722768 pandoc_demo
  595275 Documents             49218456 pgadmin.log
  595277 Downloads             15078624 pomelo
 7094352 LevelTest              1009499 project
 7098493 LevelTest.zip          1011801 qdb
  595388 Library                5901898 qdb.zip
  595439 Movies                23150187 test
  595441 Music                  1010768 tmp
  595443 Pictures              17956310 trunk
  595445 Public                17970255 trunk.zip
32072972 app                   41999857 webwork
 1009500 code                  13208610 游戏配置
22509232 databak

我们看到的前面的数字序列就是 index node

如何理解呢,你可以想象成 windows 操作系统里的快捷键.对同一个文件的访问提供了多个入口.

指令:

ln  [option] link_file  source_file

(link_file是待建立链接文件的文件,source_file是新创建的链接文件)

-f 建立时,将同档案名删除.

-i 删除前进行询问.

示例:

ln -s  myfile mylink      建立myfile 文件的软链接 mylink

ln myfile mylink          建立myfile 的硬链接 mylink

软链接

ln -s myfile mylink

软链接创建后,用户数据中存储的并不是文件本身的记录,而是一个指向 原文件路径的一个指针.但是它有自己的 index node 序列.

所以 ,软链接其实就是一个新的文件,但是这个文件很特殊,因为他的用户数据中放的不是文件内容,而是一个指向其他文件的指针.

软链接有下面几个特点:

多个软链接有多个不同的 index node

不仅可以对文件创建,还可以对目录创建软链接

软链接可以交叉文件系统

删除软链接 并不会影响原文件,但是原文件被删除,这个软链接就成了一个死链接.

硬链接

ln myfile mylink

硬链接创建后,用户数据中存储的是文件本身记录,其他他的用户数据和元数据都和 myfile 一样,唯一不同的是文件名.

所以硬链接就是同一个文件有了多个文件名, 但是多个文件名都指向了 同一个 index node

这样看来,硬链接就是有多个别名的同一个文件.

硬链接有下面几个特别:

出自:linux 下的使用 ln 创建 软链接连接 和 硬链接

他们有相同的 index node

有相同的数据记录

只能在已经存在文件上创建 硬链接

删除其中任何一个,其他硬链接不受影响.

只能对文件做硬链接