文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。
硬链接
link 源文件名 新文件名
ln 源文件名 新文件名
stat 文件名 #查看文件信息
ls -li #查看目录下文件的硬链接数
liu@liu:~/code1$ ls -li
总用量 12
525214 -rw-r--r-- 1 liu liu 14 Aug 22 15:14 2.txt
528256 lrwxrwxrwx 1 liu liu 5 Aug 22 17:20 a -> a.txt
527446 -rw-r--r-- 1 liu liu 20 Aug 22 17:21 a.txt
525200 drwxr-xr-x 2 liu liu 4096 Aug 22 14:58 code
# 硬链接的特点:
1.只能对已存在的文件进行创建;
2.不能对交叉文件系统进行硬链接的创建;
3.不能对目录进行创建,只可对文件创建;
4.删除一个硬链接文件并不影响其他有相同inode 号的文件。
一个 inode 号对应多个文件名,则称这些文件名为硬链接
-
软连接
软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接类似快捷方式
ln -s 源文件 目标文件。
软连接的特点:
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 inode 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接
Other:修改软硬连接都会 更改到源文件内容