Linux 运维之硬链接与软链接详解
了解这个的时候不如先知道下文件吧.
我们知道文件都有文件名与数据,但是呢这个在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。
用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;
而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。
在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名是为了方便人们的记忆和使用
系统或程序通过 inode 号寻找正确的文件数据块,所以呢文件读取过程则为先读取inode,然后找block数据。
而linux 引入的两种链接:硬链接与软链接,为系统解决了文件的共享使用,同时提供隐藏文件路径,节省存储,同时增加了文件的安全。
你可能看了这么久还是一脸懵逼的,不要着急看完实例,你就懂了。
一,硬链接
就是一个文件的一个或多个文件名 -->这么简单的回答是不是又懵逼了呢??
通俗的讲硬链接就是一个你的复制人,你在的时候你干什么他也干什么,但是你不在了,他是不会消失,就不受你约束了。
可是我还要讲一个呢---------ln命令 ---> ln [选项]... [文件]...
你看着文章只需要掌握两个
ln 目标文件 创一个个性化名字 ---->硬链接
ln -s 目标文件 创一个个性化名字------>软链接
ln 就是创建链接的 ----->然后没了。
ln 学会了现在正式开讲 硬链接
我们通过硬链接的特性来去了解他吧
1,文件具有相同的inode及data block,

我们先创建一个文件,现在我要给他添加硬链接,

创建好了

是不是创建好了??然后用ls -li 查看下看到inode一样的
这就是inode一样。看到这里肯定有个模糊的理解了吧,看张图:

2,硬链接是不会占用空间的
这个你知道就行,记住不占用磁盘空间
3,只能对已存在的文件进行创建
创建的时候源文件要在,你不可能凭空出来个链接文件吧??
4,不能对目录进行创建,只可对文件创建
对目录创建是软连接的事,硬链接只会创建文件链接哦
5,无论哪个文件输入东西另一个也会有

这就是复制人的强大
6,删除一个文件另一个是不受影响的
我们删除源文件看看:

不受影响,依旧能写能读
注意:目录创建是不可以的哦

也不能交叉文件系统
我是这样理解一个root 系统 一个dev 里面东西不一样就不行了
二,软连接
来完成硬链接不能完成的事:
软链接呢就像你的投影,为啥这样说呢?你有的他有,你不在了他就变木头
看下软链接的读取流程

创建一个软链接先:

看到错误没呢?
创建的时候,要创建的内容不能带/ 所以目录名不能和文件名重合。
软链接呢可以做硬链接的事,即可以文件,也可以目录哦
特性: 1,软链接有自己的文件属性及权限,inode不同等
不知道大家有没有发现上面图片,已经描述很详细了
文件属性不同呢
2, 可对不存在的文件或目录创建软链接
这个是不是强大多了?不过你创建好了,源文件不再,创建的是没用的呢

我们要怎么让他有用呢??
答案是创建源文件

看不闪了 活了 ,,,
同样可以推出,,假如删除源文件,链接文件是不能用的,无效


3,文件内容共享,无论哪里有新文件还是内容,另一边都会有

4,软连接是可以对文件或者目录创建的
这个可以理解吧
5,创建软链接时,链接计数 i_nlink 不会增加

不管你创建多少都不会增加的,硬链接却会有哦我们看看:

6, 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)
好了结束了 ,下一篇博客不见不散!
Linux 运维之硬链接与软链接详解的更多相关文章
- [转帖]详解Linux系统inode原理--硬链接、软链接、innodb大小和划分等
详解Linux系统inode原理--硬链接.软链接.innodb大小和划分等 原创 波波说运维 2019-07-17 00:03:00 https://www.toutiao.com/i6713116 ...
- linux系统中的硬链接和软链接
首先我们需要了解linux下硬链接以及软连接的基本概念.硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.软链接:也称为符号链接,新建的文件以“路径”的形式来表示另 ...
- Linux硬链接和软连接详解
硬链接: 硬链接是通过索引节点inode来进行链接的(关于inode,http://www.cnblogs.com/ZGreMount/p/7653307.html).在Linux(ext2,ext3 ...
- 自动化运维工具Ansible的部署步骤详解
本文来源于http://sofar.blog.51cto.com/353572/1579894,主要是看到这样一篇好文章,想留下来供各位同僚一起分享. 一.基础介绍 ================= ...
- 自动化运维工具Ansible之Tests测验详解
Ansible Tests 详解与使用案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. 该用 ...
- 自动化运维工具Ansible之Roles测验详解
Ansible Roles 详解与实战案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. 该用 ...
- 运维自动化之Cobbler系统安装使用详解[good]
一.简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成P ...
- Nginx高性能服务器安装、配置、运维 (3) —— Nginx配置详解
四.Nginx 配置详解 YUM方式安装的Nginx默认配置文件放在/etc/nginx目录下,使用Vim编辑/etc/nginx/nginx.conf: ---------------------- ...
- 运维数据库平台~inception审核规则详解
---恢复内容开始--- 一 简介:这次我们来介绍最核心的审核功能 二 讲解:简单来说 inception就是mysql的二次过滤,何谓二次过滤,我们知道,mysql本身都有自己的审核规则,为业界所通 ...
随机推荐
- URAL 1355. Bald Spot Revisited(数论)
题目链接 题意 : 一个学生梦到自己在一条有很多酒吧的街上散步.他可以在每个酒吧喝一杯酒.所有的酒吧有一个正整数编号,这个人可以从n号酒吧走到编号能整除n的酒吧.现在他要从a号酒吧走到b号,请问最多能 ...
- (转)【前端模板之路】一、重构的兄弟说:我才不想看你的代码!把HTML给我交出来!
原文地址:http://www.cnblogs.com/chyingp/archive/2013/06/30/front-end-tmplate-start.html 写在前面 随着前端领域的发展和社 ...
- 解决linux下80端口占用问题
在即安装有tomcat,又安装有nginx的服务器上(典型阿里云驻云java镜像),系统默认配置nginx占用80端口,tomcat占用8080端口. 如果想要便于用户可以直接通过IP或者域名访问到t ...
- HTML5 Canvas游戏开发实战 PDF扫描版
HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...
- Sharepoint2013搜索学习笔记之自定义查询规则(十)
自定义查询规则,可以根据搜索的关键字将指定的一个或一堆搜索结果提升到第一的位置,如我搜索周杰伦,可以指定搜索最靠前的结果是sharepoint网站内周杰伦的视频如下图: 第一步,进入管理中心,点击管理 ...
- wp后台更新瓷片
下载源码 还有一种方式,更新瓷片方式 1. /// <summary> /// 定时更新磁贴 /// </summary> public class ShellUpdate { ...
- ExposedObject的使用
ExposedObject可以将一个对象快速封装未一个dynamic using System; namespace ConsoleApp2 { class Program { static void ...
- LoadRunner---杂问题&接口测试
问题1] 响应时间是系统完成事务执行准备后所采集的时间戳和系统完成待执行事务后所采集的时间戳之间的时间间隔,是衡量特定类型应用事务性能的重要指标,标志了用户执行一项操作大致需要多长时间.[问题2] 系 ...
- 同一个程序里有多个版本的App
在Xcode中添加多个targets进行版本控制,就是同一个app开发多个版本 以Xcode 9.3 为例 1. 创建 点击左侧工程项目文件,选择TARGETS 下的项目右击选择 Duplicate. ...
- Selenium API(二)
1.定位一组元素 WebDriver提供了8种定位一组元素的方法. driver.find_elements_by_css_selector() driver.find_elements_by_tag ...