Linux中文件与目录对应的硬链接与软链接方式总结
发布网友
发布时间:2022-04-21 01:56
我来回答
共1个回答
热心网友
时间:2023-11-04 08:29
硬链接
新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用。
硬链接特征:
1、拥有相同的 i节点 和相同的存储block快,可以看做是同一个文件
2、可通过i节点识别,i节点号相同
3、不能跨分区
4、不能针对目录使用
5、删除文件,硬链接正常使用
软链接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
软链接特征:
1、类似windows快捷方式
2、软链接拥有自己的i节点和block快,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
3、lrwxrwxrwx l软链接,软链接文件权限都为rwxrwxrwx,但具体看原文件的权限
4、修改任意文件,另一个都改变
5、删除原文件,软链接不能使用
6、创建软链接一定要写绝对路径
注意软链接的文件权限为777 但是最终权限有源文件决定 l表示软链接文件。
一旦源文件删除,软链接将不能使用。(这是和硬链接的主要区别)
注:创建软链接时,源文件要始终使用绝对路径,否则,若创建的软链接和源文件不在同一个目录时,会找不到源文件。(硬链接不会有这种情况)
*少,更灵活,推荐使用。
补充:
linux系统中的硬连接有两个*:不能跨越文件系统和不允许普通用户对目录作硬连接。至于第一个*,很好理解,而第二个就不那么好理解 了。 对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接,这些都说明了系统*对目录进行硬连接只是一个硬性规定,并不是逻辑上不允许或技术上的不可行。那么操作系统为什么要进 行*呢?答案可能有两个。
先来说第一个,如果引入了对目录的硬连接就有可能在目录中引入循环,那么在目录遍历的时候系统就会陷入无限循环当中。也许您会说,符号连接不也可以引入循 环吗,那么为什么不*目录的符号连接呢?原因就在于在linux系统中,每个文件(目录也是文件)都对应着一个inode结构,其中inode数据结构 中包含了文件类型(目录,普通文件,符号连接文件等等)的信息,也就是说操作系统在遍历目录时可以判断出符号连接,既然可以判断出符号连接当然就可以采取 一些措施来防范进入过大的循环了,系统在连续遇到8个符号连接后就停止遍历,这就是为什么对目录符号连接不会进入死循环的原因了。但是对于硬连接,由于操 作系统中采用的数据结构和算法*,目前是不能防范这种死循环的。
在说明第二个原因之前,先来看看文件的dentry结构在系统空间中长什么样子和它们是怎么存放在系统空间的。dentry结构主要包含了文件名,文件的inode号,指向父目录dentry结构的指针和其他一些与本次讨论无关的指针,这里关键是那个指向父目录的指针;系统中所有的dentry结构都 是按杂凑值存放在杂凑表中的,这里的杂凑算法很重要,它是取文件名和文件的父目录dentry结构的地址一起杂凑运算出杂凑值的。现在假设有两个目录 /a和/b,其中/b是我们通过ln -d命令建立起来的对/a的硬连接。这个时候内核空间中就会存在一个/a的dentry结构和一个/b的dentry结构,由上面的知识可知,/a和/b 目录下面的每一个文件或目录都各自有对应的dentry结构(因为虽然/a目录下面的文件名没有改变,但是因为dentry结构有指向父目录dentry 的指针和计算杂凑值时考虑了父目录dentry结构的地址,这个时候dentry结构就分身乏术了),而且这种继承还会影响到所有子目录下面的文件,这样 下来就会浪费很多系统空间了,特别是如果被硬连接的目录中存在大量文件和子目录的时候就更加明显了。这也许是第二个原因。
Linux中文件与目录对应的硬链接与软链接方式总结
硬链接新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用。硬链接特征:1、拥有相同的 i节点 和相同的存储block快,可以看做是同一个文件2、可通过i节点识别,i节点号相同3、不能跨分区4、不能针对目录使用5、删除文件,硬链接正常使用 软链接另外一种连接称之为符号连...
Linux系统:那些常见的硬链接和软链接
Linux以 / 作为根目录,下设众多子目录,如bin(包含可执行程序)、boot(启动文件)、dev(设备目录)、etc(配置文件)、home(用户个人目录)等,每个目录都有其特定作用。例如,bin下存放系统二进制文件,而home则存储用户的个人文件和目录。硬链接和软链接是Linux中两种链接方式。硬链接(通过ln命令...
彻底明白Linux硬链接和软链接
创建硬链接的命令为 `ln [参数] [源文件或目录] [目标文件或目录]`。硬链接文件与源文件共享内容,修改其一,另一也随之改变。在开发中,当误删文件时,通过创建多个硬链接文件,可以降低数据丢失的风险。与硬链接不同,软链接(符号链接)能够指向任意文件系统中的文件或目录,甚至可以指向不存在的文...
一文弄懂Linux硬链接和软链接
首先,硬链接(Hard Link)是一种通过文件系统的索引节点(Inode Index)实现的链接方式。使用ln命令,只有在同一文件系统内,文件之间才能创建硬链接。一个文件可以有多个硬链接,多个路径名指向同一个索引节点,即使删除其中一个链接,只要源文件或其他链接存在,文件内容就不会丢失。硬链接对目录的创建有...
Linux系统:那些常见的硬链接和软链接
首先,要知道Linux中一切都是文件,根目录(/)下包含了众多重要目录,如bin(存放可执行程序)、boot(启动文件)、dev(设备文件)、etc(系统配置)、home(用户个人目录)、lib(库文件)等,每个目录都有其特定用途。硬链接和软链接的区别在于它们对文件内容的引用方式。硬链接(通过ln命令创建)创建...
linux硬链接和软链接的区别
1.原理上:硬链接(hard link)与软链接(soft link)的区别主要在于其工作原理。硬链接是指,若A是B的硬链接(A和B均为文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,意味着一个inode节点对应两个不同的文件名,这两个文件名指向同一个文件。在这种情况下,A和B对文件...
Linux 中软链接和硬链接的区别 | Linux 中国
软链接(符号链接,Symbolic Link,或称软链接)是一种特殊类型的文件,它链接到系统中的另一个文件或目录,类似于Windows中的快捷方式。软链接并不保存原始文件的内容,只记录路径信息,常用于库文件链接、日志文件共享和NFS网络目录。相比之下,硬链接(Hard Link)则是原始文件的一个独立副本。即使删除...
linux中硬链接和软链接的区别
3、创建方式不同 硬链接不能对目录进行创建,只可对文件创建;软链接可对文件或目录创建;4、影响不同 删除一个硬链接文件并不影响其他有相同inode号的文件。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即danglinglink,若被指向路径文件被重新创建,死链接...
【Linux】Linux系统硬链接和软链接
在 Linux 系统中,链接文件扮演着共享文件的角色,分为硬链接(Hard Link)和软链接(Symbolic Link)两种类型。要识别系统中的链接文件,需查看文件权限位,以'l'标识的即为链接文件。硬链接是通过索引节点(Inode)实现的,每个文件或目录在 Linux 文件系统中都有唯一的Inode号。多个文件名指向同一Inode...
linux中符号“软链接”和“硬链接”
在Linux中,"软链接"和"硬链接"是两种实现文件共享的方式,虽然在表面上使用体验相似,但它们在底层原理上有所不同。让我们通过实例来直观理解它们的区别。Linux的文件系统中,每个文件都有一个索引节点号(inode),这是其在磁盘上的唯一标识。链接,无论是软链接还是硬链接,都可以看作是文件的另一种...