返回
数据
分类

Linux 文件系统把硬盘分为三个部分,符号链接

日期: 2020-01-02 07:51 浏览次数 : 191

软链接和硬链接详解整理

导读Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。下面我给大家说说它们两者之间的区别。

必赢手机登录网址 1

硬链接

硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以起到防止因为误操作而错误删除文件的作用。由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。

必赢手机登录网址 ,硬链接可由命令 link 或 ln 创建,如:

link oldfile newfile ln oldfile newfile

符号链接

软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。

软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中,这样就可以很好的解决空间不足问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。

使用-s选项的ln命令即可创建符号链接,命令如下:

ln -s old.file soft.linkln -s old.dir soft.link.dir

拓展

inode叫做索引节点号,这是Linux文件系统管理文件的方式。在建立文件系统时,会建立一个索引节点表,里面包含一定数量的索引节点。每当建立一个文件时,就会为他分配一个索引节点号,相当于文件的地址。

本文转载地址:

导读 Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种...

什么是目录

Linux 文件系统是树状结构的。根目录下存在一系列子目录。目录里边有文件或者子目录。 但问题在于:

  1. 目录是什么?
  2. 文件又是什么?

文件是:数据 + 属性(比如名字、创建时间、所有者之类)
目录是:一个列表,列表中的每一项是:inode –> filename

Linux 文件系统把硬盘分为三个部分:超级块、inode 列表、数据区

inode 指示:该文件的数据存放在数据区的哪些块内。因为这个“映射”关系不能变更,因此,inode 相当于代表着文件本身。(值得注意的是,文件名与文件本身不是直接映射起来的,中间隔着 inode)

导读 Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接;另一种是符号链接(又称软链接)。下面我给大家说说它们两者之间的区别。

硬链接(Hard Link)

硬链接指通过索引节点来进行连接,在 Linux 为文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号;
硬链接指的就是在 Linux 中,多个文件名指向同一索引节点;
常见用途:通过建立硬链接到重要文件,防止误删,删除其实对应的是删除其中的一个硬链接,当文件对应的硬链接都被删除了,该文件才真正被删除;
注意: 默认情况下,ln 命令产生硬链接;

[root@centos7 home]# vi 1.txt
hello, this is 1.txt!
[root@centos7 home]# cp -l 1.txt 2.txt # 为1.txt建立硬链接2.txt,等同于ln 1.txt 2.txt
[root@centos7 home]# more 2.txt # 查看2.txt文件中的内容和1.txt文件内容一样
hello, this is 1.txt!

# 这两个文件的索引节点号,可以看见索引号(inode)一样:
[root@centos7 home]# ls -li
总用量 69868
33845219 -rw-r--r--.  2 root root       44 1月  21 10:12 1.txt
33845219 -rw-r--r--.  2 root root       44 1月  21 10:12 2.txt
[root@centos7 home]# vi 2.txt # 编辑2.txt,在末未添加:
hello, this is 2.txt!
[root@centos7 home]# more 1.txt  # 查看1.txt中是否内容改动
hello, this is 1.txt!
hello, this is 2.txt!
[root@centos7 home]# rm -f 1.txt # 删除1.txt
[root@centos7 home]# more 2.txt # 查看2.txt的内容
hello, this is 1.txt!
hello, this is 2.txt!

创建硬链接命令:cp -l 1.txt 2.txt等同于ln 1.txt 2.txt # 为 1.txt 建立硬链接 2.txt

必赢手机登录网址 2

软链接

也成为符号链接(Symbolic Link),类似于 Windows 的快捷方式,其中包含的是另一个文件的位置信息;

[root@centos7 home]# cp -s 2.txt sLink # 为2.txt文件建立符号链接sLink,等同于ln –s 2.txt sLink
[root@centos7 home]# ls –li # 可以看到两个文件有不同的索引节点号
总用量 69864
33845219 -rw-r--r--.  1 root root       44 1月  21 10:12 2.txt
36830246 lrwxrwxrwx.  1 root root        5 1月  21 10:21 sLink -> 2.txt
[root@centos7 home]# more sLink
hello, this is 1.txt!
hello, this is 2.txt!

[root@centos7 home]# rm -f sLink # 删除符号链接,不影响源文件
[root@centos7 home]# more 2.txt
hello, this is 1.txt!
hello, this is 2.txt!

[root@centos7 home]# rm -f 2.txt # 删除2.txt
[root@centos7 home]# ls -li
总用量 69860
36830246 lrwxrwxrwx.  1 root root        5 1月  21 10:21 sLink -> 2.txt
[root@centos7 home]# more sLink
sLink: 没有那个文件或目录

创建符号链接命令:cp -s 2.txt sLink 等同于ln –s 2.txt sLink # 为 2.txt 文件建立符号链接 sLink

符号连接相当于快捷方式。这意味着什么呢?

  1. 符号连接是一个文件,一个与被它连接的文件不一样的文件。它有自己的 inode。
  2. 符号连接的内容应该是一个路径,该路径指示着它连接的文件。这意味着如果该路径的文件被删除了、改名字了,它即将访问不到。如果该路径下的文件被掉包了,它将访问错误的文件。

硬链接

区别

硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以起到防止因为误操作而错误删除文件的作用。 由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。 硬链接可由命令 link 或 ln 创建,如:

挂载点

只能在同种存储媒体上的文件之间创建硬链接(Hard Link),不能在不同挂载点下的文件间创建硬链接,对于后一种情况,可以使用软链接;(区分不同挂载点与同一挂载点不同目录)
如跨不同的挂载点建立硬链接的报错信息:

[root@centos7 home]# ln 2.txt /dev/hLink
ln: 无法创建硬链接"/dev/hLink" => "2.txt": 无效的跨设备连接
link oldfile newfile 
ln oldfile newfile

目录

软连接就相当于 win 中的快捷方式即如果软链接一个目录只是一个目录的快捷方式到指定位置,操作系统找这个快捷方式会直接找到真实目录下的文件。但是硬链接的话,相当于镜像的方式,创建一个目录的硬链接之后,操作系统需要把这个目录下所有的文件都要做一次硬链接(复制一份过去),这样操作系统在访问这个链接的时候要不断去遍历,大大增加复杂度,而且很容易进入死循环。

硬链接不能对目录创建受限于文件系统的设计。Linux 文件系统中的目录均隐藏了两个特殊的目录,当前目录和父目录。其实是两个硬链接,若系统运行对目录创建硬链接,则会产生目录环。

符号链接

小结

1: 硬链接是同一文件的不同访问路径,其对应的索引节点号是一样的,删除文件其实就是删除其中的一个硬链接,如果该文件对应的硬链接都被删除了该文件才被删除,常用于保护文件;
2: 符号链接类似于 Windows 中对应的快捷方式,删除符号链接不影响源文件,删除源文件,则对应的符号链接也没有意义;

软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。 软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中,这样就可以很好的解决空间不足问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。 使用-s选项的ln命令即可创建符号链接,命令如下:

ln -s old.file soft.link
ln -s old.dir soft.link.dir

拓展

inode叫做索引节点号,这是Linux文件系统管理文件的方式。在建立文件系统时,会建立一个索引节点表,里面包含一定数量的索引节点。每当建立一个文件时,就会为他分配一个索引节点号,相当于文件的地址。