链接的概念

在linux系统中,链接可分为两种:一种被称为硬链接(Hard LinK),另一种被称为软链接或符号链接(Symbolic Link)。在默认不带参数的情况下,执行ln命令创建的链接是硬链接。

硬链接

硬链接是指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index)或者Index。

在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了硬链接)。为什么为文件建立了硬链接就会防止数据误删呢?

因为文件系统的原理是,只要文件的索引节点(Inode Index)还有一个以上的链接(仅仅删除了该文件指向)。只删除其中一个链接并不影响索引节点本身和其他的连接(即数据实体并未被删除),只有当最后一个链接被删除后,此时如果有新数据要存储到硬盘时,被删除文件的数据块及目录的链接才会被释放,空间被新数据占用覆盖。此时,数据就再也无法找回了。也就是说,在linux系统中,删除文件(其实目录也是文件)的条件是与之相关的所有硬链接文件均被删除(暂时这样理解,后文会讲和进程占用也有关)。提示:硬链接就相当于文件的另外一个入口。

软链接

软链接有时也称为符号链接(Symbolic Link)。软链接文件就类似与Windows系统中的快捷方式。它实际上是一个特殊的文件,在软链接中,软链接文件实际中就是一个文本文件,这个文件中包含有软链接指向另一文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

示例演示

文件演示

[root@localhost ~]# mkdir /test/oldboy -p

[root@localhost ~]# cd /test/oldboy/

[root@localhost oldboy]# touch oldboyfile #创建一个测试文件oldboyfile

[root@localhost oldboy]# ln oldboyfile oldboyfile_hard_link #创建一个oldboyfile的一个硬链接文件oldboyfile_hard_link

[root@localhost oldboy]# ln -s oldboyfile oldboyfile_soft_link #创建一个oldboyfile的一个软链接文件oldboyfile_soft_link

[root@localhost oldboy]# ls -li

#-i参数可查看文件的inode节点信息

total

-rw-r--r-- root root May : oldboyfile

-rw-r--r-- root root May : oldboyfile_hard_link

lrwxrwxrwx root root May : oldboyfile_soft_link -> oldboyfile

截图更清晰

总结:从上面的示例结果中可以看到,硬链接文件oldboyfile_hard_link

与源文件oldboyfile的inode节点号相同,均为810403,然而软链接文件oldboyfile_soft_link的inode节点号与源文件odboyfile不同,为810404。

目录示例

[root@localhost oldboy]# mkdir oldboydir #创建一个测试文件oldboydir

[root@localhost oldboy]# ln oldboy

oldboydir/ oldboyfile_hard_link

oldboyfile oldboyfile_soft_link

[root@localhost oldboy]# ln oldboydir oldboydir_hard_link

ln: `oldboydir': hard link not allowed for directory #目录无法创建硬链接

[root@localhost oldboy]# ln -s oldboydir oldboydir_soft_link #但目录可以创建软链接,在生产环境也经常用到。

[root@localhost oldboy]# ls -lirt

total

-rw-r--r-- root root May : oldboyfile_hard_link

-rw-r--r-- root root May : oldboyfile

lrwxrwxrwx root root May : oldboyfile_soft_link -> oldboyfile

drwxr-xr-x root root May : oldboydir

lrwxrwxrwx root root May : oldboydir_soft_link -> oldboydir

提示:红色部分为本例

截图更清晰

总结:ln命令不能对目录创建硬链接,到哪可以对目录创建软链接,对于目录的软链接也是生产场景常用的功能。

删除示例

[root@localhost oldboy]# echo "this is oldboyfile" > >oldboyfile

[root@localhost oldboy]# cat oldboyfile

this is oldboyfile

[root@localhost oldboy]# cat oldboyfile_hard_link

this is oldboyfile

[root@localhost oldboy]# cat oldboyfile_soft_link

this is oldboyfile

[root@localhost oldboy]# rm -f oldboyfile #删除原始文件,其实就是删除了一个文件的硬链接

截图更清晰:

[root@localhost oldboy]# cat oldboyfile_hard_link

this is oldboyfile

提示:奇怪,内容还在,其实这就是因为有oldboyfile_hard_link硬链接存在,因此即使删除了oldboyfile,但是仍有硬链接指向文件的INODE节点,所以,此时文件才不会被释放被删除,当删除文件oldboyfile时,仅仅删除了oldboyfile到该文件INODE节点的连接而已。

[root@localhost oldboy]# cat oldboyfile_soft_link

cat: oldboyfile_soft_link: No such file or directory

总结:通过上面的测试可以看出:当删除原始文件oldboyfile,硬链接oldboyfile_hard_link不受影响,而oldboyfile_soft_link失效。

链接总结

有关文件

通过以上的测试,可以得到以下几个结论:

.删除软链接oldboyfile_soft_link,对oldboyfile,oldboyfile_hard_link无影响;

.删除硬链接oldboyfile_hard_link,对oldboyfile,oldboyfile_soft_link也无影响;

.删除oldboyfile,对硬链接oldboyfile,oldboyfile_hard_link没有影响,导致软链接oldboyfile_soft_link失效。

.同时删除源文件oldboyfile,硬链接oldboyfile_hard_link,整个文件会真正的被删除。

.很多已经设备中的快照功能,就是利用了硬链接的原理。

有关目录

1.对于目录,不可以创建硬链接,但可以创建软链接

2.对于目录的软链接是生产环境中采用的技巧

Linux系统硬链接和软链接说明 - 运维笔记

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

Linux系统硬链接和软链接介绍

1.链接的概念 在Linux系统中链接分为硬链接和软连接两种,一种为硬链接,另一种为软连接或符号链接(symbolic Link).ln命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建 ...

【Linux】Linux系统硬链接和软链接

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

Linux系统——硬链接与软链接

文件属性软硬连接: 链接有两种,一种为硬链接(Hard Link),另一种为软链接或符号链接(Symbolic Link或Soft Link). 建立硬链接时,链接文件和被链接文件必须位于同一个文件系 ...

linux系统 硬链接和软链接

背景: 当几个用户同在一个项目里工作时.经常须要共享文件. 假设一个共享文件同一时候出如今属于不同用户的不同文件夹下.工作起来就非常方便. 比如B和C文件夹下有一文件D是两者都能够訪问和改动的共享文件 ...

理解 Linux 的硬链接与软链接(待研究)

从 inode 了解 Linux 文件系统 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux ...

Linux 的硬链接与软链接

Linux 的硬链接与软链接    http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/    若一个 inode 号对 ...

理解Linux的硬链接与软链接-转载

理解Linux的硬链接与软链接 来自:https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html

转:理解 Linux 的硬链接与软链接

Linux 的文件与目录 现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程 创建信息的逻辑单元可被多个进程并发使用.在 UNIX 系统中,操作系统为磁盘上的文本与图像.鼠标与键 ...

随机推荐

Xocde一次版本升级遇到的问题 (Code Sign Error)

因为Xcode对ios版本的支持问题,我对XCode进行了一次升级,导致原来还好的项目代码出现了编译时错误. Code Sign Error failed with exit code 1 问题就在于 ...

php的mysql\mysqli\PDO(三)PDO

原文链接:http://www.orlion.ga/1153/ PDO是一种数据库抽象层,不止可以访问mysql还可以访问其他数据库. 一.__construct() PDO::__construct ...

Hello World程序

本文最初发表于2015-8-??,是由别的地方迁移过来的 本文利用改写内存的办法在屏幕中央显示“Hello world”字符串. 首先我们需要了解80*25彩色字符模式显示缓冲区的结构. 〉〉内存中B ...

UVaLive 7500 Boxes and Balls (数学)

题意:给定 n 个球,每次从每篮子里拿出来一个放在一个新篮子里,并移除相同的,按球的个数进行排序,问你用最多几个球能完成循环. 析:数学问题,很容易发现前n项和就是最多的球数,所以我们只要找最大的n项 ...

java mysql模板

Java mysql的模版,很优雅.同时也兼顾了性能PreparedStatement和安全性(防SQL注入)两方面.对于比较简单的数据库操作基本满足要求. package dao; import j ...

javascript加载图片获取图片尺寸信息方法

如果你遇到不方便从服务器取图片尺寸信息的话,用下面代码就很方便了. // 更新: // 05.27: 1.保证回调执行顺序:error > ready > load:2.回调函数this指 ...

C语言之随机数

#include#include#includeint main(){ srand(time(0)); int ...

SpringMVC 监听文件上传进度

Spring MVC 监听文件上传进度 具体实现分三个步骤: 接管CommonsMultipartResolver,重写针对文件上传的请求. 在第一步中写入监听,以获取上传进度. 修改上传部分的配置文 ...

php简单实现二级联动

CSS在网页中应用的方式_嵌入式

内联式样式表:直接写在现有的标记中,比如: 复制代码 代码如下:

www.phpstudy.net

&g ...

linux系统怎么设置硬链接,二、Linux系统硬链接和软链接详细介绍与实践相关推荐

  1. linux系统怎么设置开机密码,Linux_Linux系统怎么设置开机密码?Linux设置开机密码的方法,为了保证Linux系统的安全,应 - phpStudy...

    Linux系统怎么设置开机密码?Linux设置开机密码的方法 为了保证Linux系统的安全,应该给系统设置开机密码.注意,"开机密码"和"登录密码"是不同的.本 ...

  2. Win8系统如何设置时间自动同步方法 电脑系统时间不能同步怎么设置

    Win8系统如何设置时间自动同步方法 电脑系统时间不能同步怎么设置 我们在使用电脑的时候,总是会遇到很多的电脑难题.当我们在遇到了需要在win8系统中对时间设置自动同步的时候,我们应该怎么操作呢?今天 ...

  3. xp系统禁止开机启动服务器,xp系统怎么设置开机启动项 xp系统如何禁止开机启动软件...

    当我们在使用电脑的时候,我们可以设置某些软件在我们开机时并启动,这样就非常方便了,可是XP系统怎么设置开启启动项呢?其实很简单,下面小编为大家带来xp系统设置开机启动项的步骤教程,不会设置的朋友可以参 ...

  4. win10计算机打印机共享怎么设置方法,Win10系统怎么设置打印机共享?Win10系统打印机共享设置教程...

    我们在使用win10系统的过程中,经常需要对win10系统打印机共享进行设置.很多对电脑不太熟悉的小伙伴不知道win10系统打印机共享到底该如何设置,那么win10系统怎么设置打印机共享呢?下面小编就 ...

  5. Linux系统可以设置电脑休眠吗,linux笔记本设置休眠

    也可在github上的此处查看(还包含一些笔记本相关的其他设置),一些更新修正推送到github比在博客上更新更方便. 挂起睡眠和休眠的区别 三种存储当前运行状态数据(前后台进程服务,不包含buff ...

  6. linux中永久设置时间的命令,Linux永久修改系统时间

    1,修改Linux时间:date -s 时间 这种方式只是临时修改系统时间,当系统重新启动的时候就会还原. 2,hwclock --set --date '2017-08-16 17:17:00' 这 ...

  7. linux应用程序设置粘滞位,Linux粘滞位的设置

    粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标.最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件.如果不为目录设置粘滞位,任 ...

  8. linux 组群设置组群密码,Linux 组群账户管理

    一.Linux组群账户配置文件 1./etc/group文件 /etc/group文件是用户组群的配置文件,内容包括用户和用户组群,并且能显示出用户是归属哪个用户组群或哪几个用户组群.一个用户可以归属 ...

  9. 在Linux内核层面集成图形界面,技德操作系统(Jide OS)详细介绍

    技德操作系统(Jide OS)是一款采用Linux内核的国产操作系统,兼容性好且功能强大,为用户提供个人电脑和移动设备良好体验的国产研发操作系统.它实现了跨平台的CPU指令集兼容.跨平台应用兼容.跨平 ...

最新文章

  1. pytorch的backward
  2. css兼容ie9 ie11,用webpack打包的css在ie9些有些css文件没有引进去是为什么 ie11可以...
  3. 雨课堂c语言考试题库2020,雨课堂2020题目答案,雨课堂2020作业答案
  4. 编码练习——Java-3-数组
  5. eclipse中菜单Build Path的解释和设置
  6. go语言slice使用的时候遇到的奇怪现象以及分析
  7. java使用socket实现一个多线程web服务器
  8. 改 3 行代码不应该花一整天的时间
  9. Cypress下载安装+问题记录
  10. Android SO文件保护加固——加密篇(一)
  11. win10系统暴雪战网连不上服务器,win10系统暴雪战网无法登陆的解决方法
  12. 《裁梦为魂》 - 银临 :OI版
  13. 时钟容错同步算法之FTA
  14. java poi 将公文套红 并 电子签章
  15. 治疗脱发需要多少钱?如何选择合适的治疗方案?
  16. 提取文件名-Java
  17. Icons图标,图片download
  18. 设计模式 - 享元 代理
  19. js 生成二维码并下载
  20. Ruby 哈希操作(和 Python3 字典对比)

热门文章

  1. 台式电子计算机内部电源的电压,强国挑战答题答案:一般计算机电源都在()电压范围内工作。...
  2. CentOS 7 万网申请免费 SSL 证书,apache 详细教程
  3. iOS—使用iPhone在App Store免费下载使用靓丽速达应用
  4. [HIMCM暑期班]第3课:一个博弈问题
  5. 进口面料洗标大全_巧手缝纫_新浪博客
  6. WebGather有用网站大推荐
  7. 【开源】DA14580-串口实验教程——疯壳·ARM双处理器开发板系列
  8. android系统重启系统,安卓系统不停重启怎么办
  9. 入手评测 米家新风空调尊享版怎么样
  10. transformer论文解读_一文读懂transformer(CV专享)