[操作系统]软连接和硬链接的区别

本文解析了Linux系统中的软链接和硬链接的区别与联系。软链接类似于Windows中的快捷方式,指向另一个文件,而硬链接则指向同一文件的不同名称。软链接可跨文件系统、可对不存在的文件链接,并能链接目录;硬链接则不具备这些特性。

From: http://baike.baidu.com/view/4328569.htm

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。

  • 软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)

  • 硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
  • 硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
  • 软链接可以跨文件系统,硬链接不可以;
  • 软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);
  • 软链接可以对目录进行连接,硬链接不可以。
  • 两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。
  • 使用 -s 开关可以创建软链接。

转载于:https://www.cnblogs.com/wendyy/p/9324181.html

### 链接与硬链接的概念及区别 #### 1. **概念** - **链接(Symbolic Link)** 链接是一个特殊的文件,它包含了指向另一个文件或目录的路径名。类似于 Windows 中的快捷方式,通过链接可以访问目标文件的内容[^2]。 - **硬链接(Hard Link)** 硬链接是同一个文件的不同入口点。多个硬链接共享同一个 inode 数据块,因此它们实际上是同一个文件的不同名字。删除其中一个硬链接不会影响其他硬链接的存在[^4]。 --- #### 2. **主要区别** | 特性 | 链接 | 硬链接 | |--------------------------|-------------------------------------|----------------------------------| | **定义** | 指向目标文件路径的特殊文件 | 共享同一 inode 的新文件名 | | **inode 是否相同** | 不同 | 相同 | | **跨文件系统支持** | 支持 | 不支持 | | **能否链接到目录** | 可以 | 不可以 | | **原文件删除后的状态** | 链接失效 | 链接依然有效 | 具体解释如下: - **inode 是否相同** 硬链接与源文件共享同一个 inode,而链接则拥有自己的独立 inode,并仅存储目标文件的路径信息[^2]。 - **跨文件系统支持** 链接可以在不同的文件系统之间创建,而硬链接只能在同一文件系统内部操作[^3]。 - **能否链接到目录** 链接能够链接到目录,但硬链接不允许直接链接到目录文件[^4]。 - **原文件删除后的状态** 如果删除了原始文件,链接将变得无效(称为悬空链接)。然而,硬链接由于共享相同的 inode 数据块,即使删除了原始文件,硬链接仍然可用并能正常访问文件内容[^1]。 --- #### 3. **用法示例** ##### (1)创建链接 ```bash ln -s /path/to/source_file /path/to/symlink ``` 例如: ```bash ln -s /home/user/file.txt /usr/local/bin/myfile ``` ##### (2)创建硬链接 ```bash ln /path/to/source_file /path/to/hardlink ``` 例如: ```bash ln /home/user/file.txt /usr/local/bin/myhardfile ``` 注意:硬链接无法针对目录创建,尝试时会报错[^3]。 --- #### 4. **应用场景** - **链接适用场景** 当需要在一个地方快速访问位于另一位置的文件或目录时,或者希望实现类似快捷方式的功能时,可以选择使用链接[^3]。 - **硬链接适用场景** 对于频繁使用的文件,可以通过创建硬链接来减少重复存储空间占用的情况。此外,在备份重要数据时,利用硬链接技术也能节省大量磁盘资源[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值