最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Linux中软/硬链接的特性

XAMPP新闻 admin 57浏览 0评论

硬和软是一对反义词,相信很多同学在刚接触硬链接、软链接时都会被这对反义词带入理解概念的误区。那么如何来理解硬链接与软链接呢?

硬链接与软连接的概念

链接是一种允许多个文件名引用磁盘上单个文件的机制。有两种链接:

  • hard links(硬链接)
  • symbolic/soft links(一般称为软链接,但我觉得称为符号链接更为贴切)

硬链接会将多个文件名与一个inode(索引节点)关联,每个文件至少有一个硬链接且所有硬链接会共享相同的磁盘数据块,同时也作为独立的目录条目,当你创建一个硬链接后,链接计数将增加1。但需要注意的是无法跨越磁盘创建硬链接,因为inode编号仅在给定设备中是唯一的。

 #创建硬链接
 ln 文件名 硬链接名

操作系统在读取磁盘时,一次性读取多个扇区(sector),这些扇区组成了“块”(block),块是文件系统存取的最小单位。默认情况下8个sector,组成一个4KB大小的block。文件数据都存储在“块”中,而文件的元数据(属主、属组、创建时间、大小、指向与文件内容关联的数据块的指针等)都保存在“inode”中,也叫这块存储元数据的区域做“索引节点”。操作系统中的每个文件都有一个与之关联的inode,Solaris ZFS除外,它没有inode。inode的工作原理基本上类似于一本书的附录。

符号链接是指向另一个文件的特殊文件类型,其具体内容只是它指向的目标文件的全路径名称,一旦符号链接所指向的文件被删除,该链接仍然指向文件地址,但只留下一个挂起的链接。

 #创建符号链接
 ln -s 文件名 符号链接名
 #查看所有符号链接
 find ./* -type l -ls

示例1.

drg0055

如上图,我们通过ln命令创建了file1的硬链接file2,通过“ln -s”命令创建了file1的符号链接file3。接下来通过“ls -li”命令可以看出file1与file2的权限、属主、属组、文件大小、修改时间都是相同的,且都指向值为“36375454”的inode,第三列则表明有2个硬链接指向这个inode。注意,符号链接file3指向了不同的inode。并且file3的文件大小是5(“file1”的字符长度)。如过以下图方式创建符号链接,则其长度为16(“/home/test/file1”的长度)。

drg00055


示例2.

drg000055

如上图,在删除原始文件file1后,硬链接file2仍然可以访问,符号链接仍存在,但是已经无法访问其链接的内容了,且目录变得闪烁,表示此链接不可用。


示例3.

drg000055

如上图,当前操作系统的/dev/sda3分区挂载在根目录,/dev/sdb1分区挂载在/mnt/sdb1目录。在创建file1的硬链接到/mnt/sdb1/file2时产生报错,提示无法跨设备创建硬链接。接下来使用命令“ln -s file1 /mnt/sdb1/file3”成功创建符号链接,但是方位file3时提示找不到文件,通过命令“ll /mnt/sdb1/file3”看到file3指向的原始文件路径只有“file1”,所以无法正常访问。使用命令“ln -s /home/test/file1 /mnt/sdb1/file4”重新创建符号链接后,可以正常对原始文件进行访问。

硬链接与软链接的异同

参数 符号链接 硬链接
文件长度 与原始文件名相同 与原始文件相同
索引节点 新的索引节点 与原始文件相同
限制 硬链接要处于原始文件在同一个文件;原始文件不能是目录
类型 符号链接,用“l”表示 普通文件,用“-”表示
与原始文件相比 不同 相同
原始文件移动或删除 无法使用 仍然可以使用

硬链接与复制文件有什么不同?

在同一磁盘中复制和硬链接的原理相同,但硬链接无法跨磁盘创建,且硬链接无法操作目录。

总结

在Linux中,链接可以与普通文件一样被操作,当编辑链接时,其实就是在编辑原始文件,而不是副本。硬链接与原始文件都是数据在磁盘上的入口。而符号链接则是指向原始文件的指针。

drg0000055

转载请注明:XAMPP中文组官网 » Linux中软/硬链接的特性