Linux链接文件之软连接硬链接

本文解析了Linux系统中的两种链接类型——硬链接与符号链接,并通过实际操作对比了它们的区别。硬链接通过索引节点连接文件,而符号链接则类似于快捷方式,包含目标文件的位置信息。

1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

ln 命令产生硬链接     命令格式: ln  target  linkfile

ln -s 命令产生软连接       命令格式 : ln  -s  target  linkfile

  硬连接
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

  软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

测试
linux@ubuntu:~/testlink$ touch file          #创建一个测试文件file
linux@ubuntu:~/testlink$ ln file file1          #创建file的一个硬连接文件file1
linux@ubuntu:~/testlink$ ln -s file file2       #创建file的一个符号连接文件file2

linux@ubuntu:~/testlink$ echo "I am file">>file
linux@ubuntu:~/testlink$ cat file
I am file
linux@ubuntu:~/testlink$ cat file1
I am file
linux@ubuntu:~/testlink$ cat file2
I am file
linux@ubuntu:~/testlink$ rm -f file
linux@ubuntu:~/testlink$ cat file1
I am file
linux@ubuntu:~/testlink$ cat file2
cat: file2: No such file or directory

通过上面的测试可以看出:当删除原始文件file后,硬连接file1不受影响,但是符号连接file2文件无效

总结


1 . 删除符号连接file2,对file,file1无影响;
2 . 删除硬连接file1,对file,file2也无影响;
3 . 删除原文件file,对硬连接file1没有影响,导致符号连接file2失效;
4 . 同时删除原文件file,硬连接file1,整个文件会真正的被删除。

Linux 系统中,文件链接分为两种:硬链接(Hard Link)和链接(Symbolic Link,也称符号链接)。这两种链接的创建方式不同,且在文件系统中的行为也有所区别。 ### 创建硬链接 硬链接是通过文件的 Inode 节点进行连接的。多个文件名可以指向同一个 Inode,这些文件名所对应的文件就是彼此的硬链接。创建硬链接不会占用额外的磁盘空间,因为它们共享相同的 Inode 和数据块。 要创建硬链接,可以使用 `ln` 命令而不带 `-s` 参数。例如,要为文件 `a.txt` 创建一个硬链接 `b.txt`,可以执行以下命令: ```bash ln a.txt b.txt ``` 创建后,`a.txt` 和 `b.txt` 将共享相同的 Inode,修改其中一个文件的内容会反映在另一个文件上 [^2]。 ### 创建链接 链接则类似于 Windows 中的快捷方式,它是一个指向原始文件路径的特殊文件链接可以跨文件系统,并且即使原始文件删除链接仍然存在,但此时它指向的是一个不存在的文件路径。 要创建链接,可以使用 `ln` 命令并带上 `-s` 参数。例如,要为文件 `a.txt` 创建一个链接 `c.txt`,可以执行以下命令: ```bash ln -s a.txt c.txt ``` 创建后,`c.txt` 是一个指向 `a.txt` 的链接,修改 `a.txt` 的内容会反映在 `c.txt` 上,反之亦然 [^2]。 ### 区别与特性 - **Inode 共享**:硬链接共享同一个 Inode,而链接一个独立的文件,拥有自己的 Inode [^3]。 - **跨文件系统支持**:硬链接不能跨文件系统,而链接可以 [^1]。 - **删除行为**:如果删除硬链接所指向的源文件,其他硬链接仍然有效;而如果删除链接的源文件链接将失效 [^2]。 - **磁盘空间占用**:硬链接占用与源文件相同的磁盘空间,而链接仅占用少量空间用于存储路径信息 [^2]。 ### 示例代码 以下是一个简单的 Bash 脚本示例,演示如何创建硬链接链接,并查看它们的属性: ```bash #!/bin/bash # 创建测试文件 echo "This is a test file." > a.txt # 创建硬链接 ln a.txt b.txt # 创建链接 ln -s a.txt c.txt # 查看文件信息 ls -li a.txt b.txt c.txt ``` 运行此脚本后,使用 `ls -li` 命令可以查看文件的 Inode 信息。可以看到 `a.txt` 和 `b.txt` 具有相同的 Inode 号,而 `c.txt` 有自己独立的 Inode 号 [^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值