1. 硬链接与软链接
linux ext4 文件系统示意图
ext4 文件系统.jpg
ext4 文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。
inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。大家如果仔细查看,就会发现 inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。
block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。
所以,我们可以知道以下 2 个重要的信息:
- 每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
- 如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块;
根据 linux 存储文件的特点之后,链接可以分为以下两种:
硬链接:如果 B 是 A 的硬链接,那么它们指向的是同一个文件,这允许一个文件存在多个目录,用户可以通过硬链接机制通过硬链接指向一些重要的文件上,源文件改变链接展示的内容也相应的改变,这可以防止文件的误删。
软链接:类似 windows 中的快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
2. 链接使用方式
创建硬链接命令
ln 链接 被链接文件
-s 源目录 目标目录
建立软链接文件,指定的源目录必须是文件所在完整的绝对目录。如果不加-s
选项,则建立硬链接文件。软连接可以作为软件可执行程序的快捷方式。例如ln -s /home/zhbi98/sublime_text/sublime_text(这个不是目录,是可执行文件名) ~/desktop
即可创建软链接。
-f
强制,如果目标文件已经存在,则删除目标文件后再建立链接文文件。
这里需要注意,软链接文件的源文件必须写成完整的绝对路径,而不能写成相对路径(硬链接则没有这样的要求),否则软链接文件会报错。这是初学者非常容易犯的错误。链接类似于文件复制,但是链接后的两者更改其中任意一个,另一个都会随之变化。
网友评论