首页 > 系统相关 >linux中的软连接和硬连接

linux中的软连接和硬连接

时间:2023-03-06 16:04:04浏览次数:31  
标签:f1 f2 f3 文件 连接 linux 节点

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。

硬连接

硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软连接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

 

 

 

[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

 

 

 【有关修改】

当修改f1的时候,f2和f3均会变化;

修改f3时,因为f1变了,所以f2也变了;

修改f2时,因为f1变了,所以f3也变了;

【有关删除】

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

 

标签:f1,f2,f3,文件,连接,linux,节点
From: https://www.cnblogs.com/liuxiangyan/p/17184195.html

相关文章

  • Linux扩展-cnblog
    linux其他命令(了解)主机名的修改目标修改服务器主机名网络服务的开启和关闭主机名配置​ 需求:默认主机名是localhost,我们希望改为有含义的主机名。如:heima,itc......
  • linux root fs生成
    1zcat../initramfs-4.18.0-240.el8.x86_64.img|cpio-idmv2rpm-ivh./KMOD_MEGARAID_SAS_07_714_04.rpm3depmode-broot4dracut--force5cat/lib/mo......
  • ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接
    今天通过DatabaseControl日常查看Oracle数据库情况,结果报错了:ORA-12528:TNS:listener:allappropriateinstancesareblockingnewconnections然后百度,看......
  • Java 合并多个碎片文件到一个文件,也可以直接使用linux cat命名
    Java合并多个碎片文件到一个文件,也可以直接使用linuxcat命名linuxcat命令cat*.zip.*>out.zipjava工具使用方式#编译javacCombineFile.java#执行javaComb......
  • centos7.9系统禁用selinux脚本
    临时关闭setenforcepermissive永久关闭配置文件路径/etc/sysconfig/selinux修改配置项SELINUX=enforcing为SELINUX=disabledsed-i's/SELINUX=enforcing/'SEL......
  • Linux
    下载:通过finalshell                ......
  • 你也能成为“黑客”高手——趣谈Linux Shell编程语言
    作者:京东零售杜兴文我们看过很多在电脑命令行敲一些命令并给观众展示很高科技的画面感的电影,比如《盗梦空间》《操作系统革命》《代码》等等,再想想电影黑客帝国中的画面......
  • linux 查看动态库里的函数
    nm-Dlibaudio_frame_api.so上面是linux的,下面是Android的(针对的是targe_os=android,targe_cpu=arm等动态库的)/home/jackey/code/webrtc-checkout/src/third_p......
  • linux下nginx安装rtmp模块
    0.背景1.安装1.1安装nginx所需的编译环境yuminstall-ywgetunzipgccgcc-c++perlpcre-develzlibzlib-developensslopenssl-develnet-tools1.2下载nginx......
  • RedisDesktopManager工具本地服务端连接失败的问题
    观前提示,以下方法仅实践于本地服务端的连接测试。  在redis分布式运行后,需要对redis队列和指纹信息进行清除,但是,在打开RedisDesktopManager可视化工具进行连接时,发现总......