Liunx 命令之链接操作

Linux 系统中有软链接和硬链接两种特殊的“文件”。

软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。

硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。

1、创建方法

软链接(符号链接) ln -s source target

硬链接 (实体链接)ln source target

2、inode

要解释清楚两者的区别和联系需要先说清楚 linux 文件系统中的 inode 这个东西。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。

对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:

首先,系统找到这个文件名对应的inode号码;

其次,通过inode号码,获取inode信息;

最后,根据inode信息,找到文件数据所在的block,读出数据。

当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)

这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个文件的 inode。

Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber, 其他信息还有创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息。

inode本身并不记录文件名

文件名记录在目录文件的block当中,所以新增、删除、更改文件名与目录的写权限有关。

因此当我们要读某个档案时,就务必经过其目录的inode和block,然后才能够找到待读取档案的inode号,最终才会读到正确的档案block内的数据。

系统是通过索引节点(而不是文件名)来定位每一个文件。

3、硬链接解析

当前目录下有两个文件soft_sourcefile和hard_sourcefile

这里我们注意在创建链接前,hard_sourcefile显示的链接数目为1,创建链接后

1.hard_sourcefile和hard_sourcefile_hardlink的链接数目都变为2。

2.hard_sourcefile和hard_sourcefile_hardlink的inode号是一样的,都是492911。

3.hard_sourcefile和hard_sourcefile_hardlink显示的文件大小也是一样,都是16B。

可见进行了ln命令的操作结果:

1)hard_sourcefile和hard_sourcefile_hardlink是同一个文件的两个名字,

2)它们具有同样的索引节点号和文件属性,建立文件hard_sourcefile的硬链接,就是为 hard_sourcefile的文件索引节点在当前目录上建立一个新指针。

3)你可以删除其中任何一个,如rm hard_sourcefile,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。

多个文件名对应同一个inode,硬链接只是在某个目录下新增一笔文件名链接到某个inode号码的关联记录而已。

hard link 只是在某个目录下的 block 多写入一个关连数据而已,既不会增加 inode 也不会耗用 block 数量

不过,一般 hard link 所用掉的关连数据量很小,所以通常不会改变 inode与磁盘空间的大小

你可以透过xxxxxx 或yyyyyy的文件名之 inode 指定的 block 找到两个不同的档名,而不管使用哪个档名均可以指到 real 那个 inode 去读取到最终数据

如果将上图中任何一个档名删除,档案的inode与block都还存在,依然还可以通过另一个档名来读取正确的档 案数据。

此外,不论用哪一个档名来编辑,最终的结果都会写入相同的inode和block中,因此均能进行数据的修改。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一些不足之处:

1)不允许给目录创建硬链接。

2)不可以在不同文件系统的文件间建立链接。因为 inode 是这个文件在当前分区中的索引值,是相对于这个分区的,当然不能跨越文件系统了。

4、软链接解析

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。

软连接就是建立一个独立的文件,而这个文件会让数据的读取指向它link的那个档案的文件名,由于只是作为指向的动作,所以当来源档案被删除之后,软连接的档案无法开启,因为找不到原始档名。

连结档的内容只有文件名,根据档名链接到正确的目录进一步取得目标档案的inode,最终就能够读取到正确的数据。如果目标档案的原始档名被删除了那么整个环节就进行不下去了。

5、软链接和硬链接的区别:

1)硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;

2)在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;

3)链接数目是不一样的,软链接的链接数目不会增加;

4)文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,soft_sourcefile大小是16B,而soft_sourcefile_symbolic是15B。

5)软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

当然软链接也有硬链接没有的缺点:

1)因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;

2)还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

linux 软链接_Liunx 命令之链接操作相关推荐

  1. Linux 软链接——ln命令详解

    创建软链接 ln -s [源文件或目录] [目标文件或目录] 请注意源.目标文件/目录都不要在后面加"/",重要的事情说三遍. 例如: 当前路径创建test 引向/var/www/ ...

  2. Linux基础 常见命令 思维导图总结

    该系列文章总纲链接:专题分纲目录 Linux环境 1 Linux基础 常见命令 学习链接 @1 该链接旨在 对Linux系统 从0到1 进行入门级学习,同时对Linux命令有一个基本的了解: Linu ...

  3. linux远程白名单,Linux的Iptables命令实战2—设置白名单

    一.场景模拟 购买一台新的云服务器需要做好防护,最简单的就是设置白名单,默认设置全部DROP.我司白名单IP如下:192.168.0.10/24 注:这个192.168.0.10/24是私网网段,只是 ...

  4. Linux 01day--基础命令01(目录操作、拷贝、链接、文件权限及所有者所在组、查找文件、安装卸载、磁盘管理)

    查看目录下的文件: tree(需要安装tree:sudo apt-get install tree) ls 略 ls -l 详细(主要查看权限) ls -a 查看隐藏文件("."点 ...

  5. 【收藏】Linux系统常用命令速查手册(附PDF下载链接)

    给大家收集整理了日常常用的Linux系统命令,仅供大家参考. 大家如果觉得文章看起来不太方便,可以在+qq. 2 3 5 53 3 1 0 4 6 备注"liunx命令",即可获取 ...

  6. linux 创建连接命令 ln -s 软链接

    linux 创建连接命令 ln -s 软链接 这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s, 具体用法是:ln ...

  7. linux系统怎么设置硬链接,二、Linux系统硬链接和软链接详细介绍与实践

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

  8. rhcsa第三次作业#Linux软链接和硬链接,对一级目录的解释,重定向操作

    rhcsa第三次作业#Linux软链接和硬链接,对一级目录的解释,重定向操作 文章目录 前言 一.软链接和硬链接 二.一级目录的解释 Linux系统目录结构 一级目录 三.重定向 总结 前言 注意,在 ...

  9. Linux入门学习(四)—— 什么链接文件?软链接文件和硬链接文件有什么区别以及特点?

    引言:上期回顾(想要学习的童鞋可以点击看看) 前几章我们所说的命令都是针对文件和文件夹,和一些常用操作.今天我们来学习特殊一点的文件"链接文件",这一章节会告诉大家什么是链接文件, ...

最新文章

  1. php获取数组中,相同键名的键值之和
  2. RxJava 参考文档
  3. PYG教程【一】入门
  4. 会员充值-》解决方案之一
  5. 77. PHP 文件读取
  6. java sleep唤醒_[JavaEE]如何唤醒Sleep中的线程
  7. Github代码安全监控
  8. 线性代数学习指导与MATLAB编程实践,线性代数学习指导与MATLAB编程实践(邵建峰)...
  9. 如何进行航拍全景摄影(上)
  10. 2014十大的安全工具(ToolsWatch.org投票选出)
  11. 用PS把一张图片变成素描画
  12. Qt编写安防视频监控系统33-onvif云台控制
  13. HTML图片和多行文字并列显示
  14. 笔记本开启热点后上不了网
  15. Presupposition
  16. 流利说被强制退市:因市值过低 不符合上市要求
  17. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储
  18. 基于system generator的整除除法设计
  19. IIS7+PHP安装教程
  20. 关于敏感词汇通过Excel导入进本地数据库

热门文章

  1. MYSQL百万级数据,如何优化
  2. 扩展Pentaho Report Designer报表工具
  3. webpack 使用教程--实时刷新测试
  4. Freebsd10.3(FreeBSD11 Beta1)使用手记
  5. 11.使用ForwardAction实现页面屏蔽。
  6. 知乎专栏应用客户端源码项目
  7. Backbone React Requirejs 应用实战(一)——RequireJS管理React依赖
  8. Windows系统下nodejs安装及配置
  9. iptables 范例
  10. 拓扑排序杭电 1285确定比赛名次