Centos 7 硬连接和软连接

硬连接通过索引节点让多个文件名指向同一数据块,防止误删,而软连接(符号连接)则类似Windows的快捷方式,指向文件的路径。当源文件删除时,硬连接文件仍可访问内容,但软连接将失效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Centos 7 硬连接和软连接

概述

硬连接

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

软连接

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

硬连接

复制一个文件,可以看到此文件内容,删除原文件之后,复制 的文件也能看见

ln语法

ln [选项] 目标 [链接名]
ln [选项] 目标 目录

先创建一个文本文件

[root@localhost ~]# touch 1.txt
[root@localhost ~]# echo "hahaha" >> 1.txt
[root@localhost ~]# cat 1.txt
hahaha
[root@localhost ~]# ln 1.txt 2.txt
[root@localhost ~]# ls -l -i
total 12
33879049 -rw-r--r--  2 root root    7 Jun 25 22:37 1.txt
33879049 -rw-r--r--  2 root root    7 Jun 25 22:37 2.txt
33574978 -rw-------. 1 root root 1423 Jun 25 17:55 anaconda-ks.cfg

查看文件

两个文件是一模一样的,1.txt是它的源文件,2.txt是复制的文件,如果源文件1.txt删除,2.txt还是可以查看内容

查看文件

软连接

复制一个文件可以看到此内容,但是删除了原文件之后,就看到复制文件里面的内容了,相当于一个快捷方式的作用

创建文件

[root@localhost ~]# touch 1.txt
[root@localhost ~]# echo “dccnb” > 1.txt
[root@localhost ~]# cat 1.txt
dccnb

ln -s 1.txt 2.txt
ls -l -i

删除源文件,快捷方式也就不能查看内容

 

### 链接的概念 在 Linux 类 Unix 系统中,链接(Symbolic Link 或 Symlink)是一种特殊的文件类型,它指向另一个文件或目录。创建链接类似于在 Windows 中创建快捷方式。通过链接,可以方便地访问目标文件或程序。 --- ### 如何在 CentOS 7 中创建链接 可以通过 `ln` 命令来创建链接。以下是具体方法: #### 使用语法 ```bash ln -s [源文件/目录] [链接名称] ``` - `[源文件/目录]`: 表示实际存在的文件或目录路径。 - `[链接名称]`: 是要创建的链接的名字及其存储位置。 例如,在安装 Node.js 的过程中,为了使系统能够识别全局命令 `npm` `node`,需要配置如下链接[^2]: ```bash ln -s /home/node-v14.15.1-linux-x64/bin/npm /usr/local/bin/npm ln -s /home/node-v14.15.1-linux-x64/bin/node /usr/local/bin/node ``` 上述操作的作用是将 `/home/node-v14.15.1-linux-x64/bin/` 下的 `npm` `node` 文件映射到系统的可执行路径 `/usr/local/bin/` 中。 --- ### 查看已有的链接 如果想确认某个文件是否是一个链接或者查看其指向的目标,可以使用以下命令: ```bash ls -l [链接名称] ``` 例如: ```bash ls -l /usr/local/bin/npm ``` 这会显示该链接的具体信息以及它的目标地址。 --- ### 删除现有的链接 当不再需要某些链接时,可以直接将其删除而不影响原始文件。使用 `rm` 命令即可完成此操作: ```bash rm [链接名称] ``` 需要注意的是,仅移除链接不会改变原文件的状态。例如,若需重新定义 `npm` 的链接,则先删除旧版本再建立新版本: ```bash rm /usr/local/bin/npm ln -s 新路径/npm /usr/local/bin/npm ``` --- ### 注意事项 1. **权限问题**: 创建跨用户的链接可能涉及权限设置。建议以管理员身份运行敏感指令,比如加上 `sudo` 来提升权限。 2. **重复冲突检测**: 在创建新的链接之前,请确保目标路径未被占用。如果有同名文件或链接存在,应先行处理以免覆盖重要数据。 3. **路径准确性**: 提供给 `-s` 参数后的两个参数都必须精确无误;错误指定可能导致功能失效甚至引发安全风险。 --- ### 总结 综上所述,在 CentOS 7 上创建管理链接是一项基础却重要的技能,尤其对于多环境部署场景下尤为有用,如同时维护不同版本的 Python 或者 Node.js 。借助简单的 `ln -s` 操作符配合恰当规划好的路径结构就能轻松实现资源的有效共享与调用[^1]。 ```python # 示例脚本:批量生成常用工具链连接 import os tools_dir = "/opt/tools" target_bin = "/usr/local/bin" for tool in ["toolA", "toolB"]: src_path = f"{tools_dir}/{tool}" dst_path = f"{target_bin}/{tool}" if not os.path.exists(dst_path): os.system(f"ln -s {src_path} {dst_path}") print(f"Created symlink: {dst_path} -> {src_path}") else: print(f"Symlink already exists: {dst_path}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘻嘻哥哥~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值