Linux:软硬链接ln指令
学习自:Linux 硬链接与软链接
1、说明
ln -s创建软链接,其他情况创建硬链接
Linux有两种链接:硬链接(Hard Link)和软链接(Symbolic Link)。ln指令默认情况下产生硬链接,加选项-s产生软链接。
硬链接
硬链接通过inode来链接。
inode是指索引节点号(indoe index),在Linux文件系统中,保存在磁盘分区中的文件都有一个inode号,存在多个文件名指向同一个inode的情况,即一个inode对应两个不同的文件名,两个文件名指向同一个文件。这两个文件对文件系统来说是完全平等的,删除其中任何一个都不会影响另一个的访问。
硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接连接到重要文件,以防止误删。此时删除一个不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块和目录的链接才会被释放。
此时文件真正删除的条件是所有与之相关的硬链接文件都被删除。
软链接
也称符号链接(Symbolic Link),类似Windows快捷方式。
它实际上是个特殊的文本文件,其中包含有另一文件的位置信息。例如:A是B的软链接,此时A和B目录项的inode号不同,A和B指向的是两个不同的inode,继而指向两个不同的数据块。只是A数据块中存放B的路径(可以据此找到B的目录项)。A和B是主从关系,如果B被删除了,A仍然存在,但是指向的是一个无效的链接。
2、用法
-
ln 选项 源文件 新建链接文件
-
ln 选项 源文件
-
ln 选项 源文件 链接目录
-
ln 选项 -t 链接目录 源文件
其中第三四种效果相同
源文件:链接源,如果是符号链接,源文件可以是文件或目录。如果是硬链接,源文件只能是文件。
说明:ln -s A B
访问路径B相当于访问路径A
3、选项
选项 |
全拼 |
说明 |
--backup[=CONTROL] | 为每个已存在的源文件创建备份文件 | |
-b | 效果同--backup但不接受任何参数 | |
-d,-F | --directory | 创建指向目录的硬链接(仅限超级用户) |
-f | --force | 强行删除任何已存在的源文件 |
-i | --interactive | 覆盖已存在文件前先询问 |
-L | --logical | 取消引用作为符号链接的源文件 |
-n | --no-dereference | 把符号链接的目的目录视为一般文件 |
-P | --physical | 直接将硬链接链接到符号链接 |
-s | --symbolic | 建立符号链接 |
-S | --suffix=SUFFIX | 使用选项-b进行源文件备份时,备份文件末尾加上的备份字符串 |
-t | --target-directory=DIR | 指定要在哪个目录中建立链接 |
-T | --no-target-directory | 将LINK_NAME视为常规文件 |
-v | --verbose | 打印每个链接文件的名称 |
--help | ||
--version |
4、例子
例子:
①实体链接
ll -i /etc/crontab 34474855 -rw-r--r--. 1 root root 451 Jun 10 2014 /etc/crontab
ln /etc/crontab . ll -i /etc/crontab crontab 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
②软链接/符号链接/快捷方式
ln -s /etc/crontab crontab2 ll -i /etc/crontab /root/crontab2 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab 53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab
- 两个文件指向不同的inode,说明两个文件独立存在。
- 连结档的大小为12bytes,因为->右边的档名[/tec/crontab]共有12个英文,每个英文占用1B,因此文件大小就是12B
注意:
如果软链接的源文件被删除/移动,那么链接文件虽然存在,但也会失效
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2022-08-09 SQL:基本概念