什么是目录

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

目录是什么?

文件又是什么?

文件是:数据 + 属性(比如名字、创建时间、所有者之类)

目录是:一个列表,列表中的每一项是:inode –> filename

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

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

硬链接(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

软链接

也成为符号链接(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

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

符号连接是一个文件,一个与被它连接的文件不一样的文件。它有自己的 inode。

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

区别

挂载点

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

如跨不同的挂载点建立硬链接的报错信息:

[root@centos7 home]# ln 2.txt /dev/hLink

ln: 无法创建硬链接"/dev/hLink" => "2.txt": 无效的跨设备连接

目录

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

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

小结

1: 硬链接是同一文件的不同访问路径,其对应的索引节点号是一样的,删除文件其实就是删除其中的一个硬链接,如果该文件对应的硬链接都被删除了该文件才被删除,常用于保护文件;

2: 符号链接类似于 Windows 中对应的快捷方式,删除符号链接不影响源文件,删除源文件,则对应的符号链接也没有意义;

linux 符号连接文件,Linux 硬链接和软链接(符号链接)相关推荐

  1. Linux之 如何查看文件是`硬链接`还是`软链接`

    Linux之 如何查看文件是硬链接还是软链接 可以用 ll 文件名 查看文件属性 以l开头的是软链接 , 相当于快捷方式 以-开头的是硬链接 实验 实验 1 创建一个文件名为"hello&q ...

  2. 【Linux学习】什么是硬链接和软链接

    什么是硬链接和软链接 硬链接:由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针, 指向文件索引节点的指针,系统并不为它重新分配 inode .每添加一个一个硬 ...

  3. 硬链接与软链接 (符号链接)的区别与联系

    在linux系统中,链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接或软链接(Symbolic Link). 硬链接与软链接 是 Linux 文件系统中的一个重要概念,其涉及 ...

  4. 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)

    通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的.然而我们还可能会遇到其使用过程中的一些坑,本文将整理这些坑并提供解决方法. 0x00 背景介绍:mklink mkl ...

  5. linux链接文件:硬链接和软连接

     linux系统中链接文件分为硬链接和软链接(软链接也叫符号链接). 硬链接和软链接都是指向文件的一种方式,但两者有不同的地方,主要有以下不同: 硬链接:伪备份   软连接:快捷方式    1.硬 ...

  6. 符号链接文件和硬链接文件

    □□实验6-11.针对符号连接文件和硬连接文件. 测试以下函数,分析其执行过程并给出结论. link(),unlink(),symlink(),readlink(),stat(),lstat() 1. ...

  7. linux硬连接脚本,linux 硬链接和软链接深入理解

    在学习linux的过程中,我经常把软硬链接,所以今天专门查了一些资料,然后整合在自己的博客中,方便以后复习,查看. 一方面也是因为看了vamei的linux的概念与体系系列文章,感觉不全的做些补充. ...

  8. 【Linux入门学习之】Linux连接文件:硬连接和软连接

    Linux下面的连接文件有2种:一种是类似与Windows的快捷方式功能的文件,可以让我们快速连接到目标文件,称为符号连接(symbolic link):另一种则是通过文件系统的inode连接产生新文 ...

  9. 浅谈linux中的硬链接和软链接文件以及ln的使用方法

    在linux系统中有一种文件叫做链接文件,可以为解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link). 一.基 ...

最新文章

  1. 怎么用python判断数据是否已经存在于表里_数据基本操作(二)
  2. 再次分享一个多选文件上传方案“.NET研究”
  3. LeetCode Intersection of Two Arrays
  4. 虚拟机下安装vmware tools
  5. Intel VT学习笔记(五)—— 调试技巧
  6. redis和kafka的写性能对比
  7. wordpress如何屏蔽wp-json(禁用REST API)
  8. hmcl整合包导入_我只用了一篇文章就完成了Spring+SpringMVC+MyBatis详细整合教程
  9. 一纬度横直线等于多公里_高中物理必修一、必修二知识点提纲,暑期预习必备...
  10. 关于CBoard中文查询条件不能正常显示问题?
  11. jmp怎么做合并的箱线图_基于JMP 15的箱线图(Box Plot)的着色
  12. 应对微软黑屏的解决办法
  13. matlab 课程总结,matlab/simulink学习的笔记都总结在这里
  14. 公众号推广裂变引流?微信公众号裂变引流有哪些方式?
  15. 物联网无人机:无人机应用实例及分析(基于XBee模块)
  16. The World's 100 Greatest Classical Composers
  17. B2B行业网站销售方式及销售工作内容
  18. Selenium安装与360浏览器使用
  19. 2016 年 高等工程数学 期末试题
  20. 详解软件人力外包对于需求企业和外包it人员的好处

热门文章

  1. 福建省学业水平考试计算机类技能考VB篇真题
  2. 为什么说金融行业获客越来越难做,总结了一下,主要是以下几个点:
  3. C++组件测试及应用 — 基于Tessy的测试技术漫谈
  4. Image Processing Machine Vision 2022 图像处理与机器视觉
  5. 超宽带脉冲定位方案,UWB精准定位技术,无线室内定位应用
  6. Cisco DHCP snooping
  7. 【论文研读】GAN 逆映射 综述 GAN Inversion: A Survey 关键部分翻译 研读思考
  8. 融云 IM 那些事儿
  9. Linux-ifcfg-eth0配置介绍
  10. 三类IP地址的私有地址