Linux系统的硬链接和软链接

本文深入解析了Linux系统中硬链接与软链接的工作原理及使用场景。硬链接作为文件的目录项备份,实现了文件的多路径访问,而软链接类似Windows的快捷方式,能够跨文件系统创建链接。文章详细对比了两者的特性,如硬链接不能跨文件系统、软链接在源文件删除后失效等问题。
一. 硬链接

硬链接是为文件开设一个新的目录项,可以看做是为原文件的备份。硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。
硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加,只要结点的连接数不是 0,文件就一直存在,不管你删除的是源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么源文件连接文件的 ,因为他们指向都是同一个 I节点)。 当你修改源文件或者连接文件任何一个的时候 ,其他的文件都会做同步的修改。
备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点含有关于文件的大部分的重要信息,包括文件数据块在磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.

二. 软链接

软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快捷方式。ln指令的使用如下所示.
ln -s [要创建的文件或文件夹] [软链接存放位置]
ln指令的使用

软链接具有以下特点:

  • 可以实现"跨系统"的文件.
# 将 Windows系统下的aa.txt文本链接到Linux系统/root目录下的bb
ln -s aa.txt /root/bb
  • 对目录进行链接,而硬链接只可以对文件进行链接;
cd ~/Document
ln -s ~/Document/304 ./304-1
  • 对不存在的文件建立链接.
cd  ~/Document
ln -s ~/Document/haha ./haha-1

备注:一旦删除源文件,链接文件会找不到指定的文件.

参考链接:https://blog.youkuaiyun.com/youcai35/article/details/72866934

Linux 系统中,硬链接软链接是两种不同的文件链接方式,它们在定义、实现机制、功能、限制等方面存在差异[^2]。 ### 定义 硬链接文件系统的多个入口点,是同一文件的多个名称,共享 inode 数据;软链接是包含路径引用的特殊文件,是指向其他文件的路径引用[^1][4]。 ### 创建命令 创建硬链接软链接都使用 `ln` 命令,但格式不同。创建硬链接的命令格式为 `ln 源文件 硬链接文件名`;创建软链接的命令格式为 `ln -s 目标文件目录 软链接文件名`,其中 `-s` 表示创建软链接[^3]。 ### inode 数据共享 硬链接的多个文件名共享同一个 inode,删除其中一个文件名,不影响其他文件名对数据的访问,因为数据本身并未被删除,只要还有硬链接指向该 inode,数据就不会丢失。例如创建文件 `file.txt` 并为其创建硬链接 `hardlink.txt`,二者 inode 相同,删除 `file.txt` 后,`hardlink.txt` 仍然可以访问数据[^3]。 软链接有自己独立的 inode,它的内容是目标文件目录的路径。软链接一个独立的文件文件类型为 `l`(链接)。当删除目标文件后,软链接会变成悬空链接,无法再访问到原来的数据。例如创建文件 `target.txt` 并为其创建软链接 `softlink.txt`,删除 `target.txt` 后,`softlink.txt` 会失效[^3]。 ### 路径使用 使用相对路径创建软链接,路径是相对于软链接文件本身,而非当前目录,这可能会导致路径引用错误,建议使用绝对路径创建软链接以避免混淆。硬链接不存在此问题[^4]。 ### 使用场景 当需要保证文件存在性,且文件内容不变,适合使用硬链接;当需要灵活性,如跨系统或动态路径的情况,适合使用软链接[^1][4]。 ### 对目录的支持 硬链接通常不允许对目录创建,主要是为了避免文件系统出现循环引用等复杂问题。软链接可以对目录创建,通过 `ln -s` 命令可以方便地为目录创建软链接[^3]。 ```bash # 创建文件 echo "Hello, Hard Link" > file.txt # 创建硬链接 ln file.txt hardlink.txt # 创建目录 mkdir target_dir # 创建目录软链接 ln -s target_dir softlink_dir ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值