一、硬链接

(一)什么是硬链接

硬链接是指通过索引节点来进行链接。在Linux中一个索引节点可能被多个文件名指向,这样就会产生多个硬链接,它的作用是可以防止误删文件。删除其中一种硬链接并不影响索引节点和其它的硬链接。也就是文件实体并没有被删除。只有当所有的硬链接被删除以及该文件并未被其它应用程序占用才会被删除。硬链接的原理可以简单使用下图解释:

(二)实战

硬链接的创建通过 “ln 源文件 硬链接文件”来进行创建:

# 文件的软链接

# 1、创建文件

[root@localhost project]# touch t1.txt

# 2、文件创建完成后本身就是一个硬链接

[root@localhost project]# ll -l

total 0

-rw-r--r-- 1 root root 0 Oct 31 12:04 t1.txt

# 3、文件创建硬链接

[root@localhost project]# ln t1.txt t1_hard.txt

# 4、所有硬链接的inode号是相同的

[root@localhost project]# ll -il

total 0

25537617 -rw-r--r-- 2 root root 0 Oct 31 12:04 t1_hard.txt

25537617 -rw-r--r-- 2 root root 0 Oct 31 12:04 t1.txt

# 创建文件夹

[root@localhost project]# mkdir tt

# 文件夹的硬链接默认就是2个,除了它本身还有内部的一个.

[root@localhost project]# ll

total 0

drwxr-xr-x 2 root root 6 Oct 31 12:06 tt

# 文件夹不能创建软连接

[root@localhost project]# ln tt tt_hard

ln: ‘tt’: hard link not allowed for directory

总结:

硬链接是具有相同inode节点的不同的文件名

删除硬链接之一或者源文件,文件实体并未被删除;只有删除所有的硬链接以及源文件才被删除(没有被其它应用程序使用的情况下)

通过给文件设置硬链接来防止误删文件

创建硬链接通过“ln 源文件 硬链接文件”,删除硬链接通过“rm -f 硬链接”

文件创建后默认有一个硬链接,文件夹创建默认有2个硬链接

文件夹不能创建硬链接,因为文件夹是用来挂载分区的,如果使用硬链接的话会造成不同分区的同一个inode号表示不同的内容

二、软链接

(一)什么是软链接

软连接你可以将其理解为Windows下的快捷方式,在Linux下,软连接就是一个普通文件,它包含指向源文件的位置信息,其原理如下图所示:

(二)实战

软连接的创建通过“ln -s 源文件 软链接”命令:

# 文件创建软链接

# 1、创建文件

[root@localhost project]# touch t2.txt

[root@localhost project]# ll -il

total 0

25537617 -rw-r--r-- 1 root root 0 Oct 31 13:11 t2.txt

# 2、创建软链接

[root@localhost project]# ln -s t2.txt t2_soft.txt

# 3、软链接与源文件是不同的文件,inode是不同的

[root@localhost project]# ll -il

total 0

25537624 lrwxrwxrwx 1 root root 6 Oct 31 13:11 t2_soft.txt -> t2.txt

25537617 -rw-r--r-- 1 root root 0 Oct 31 13:11 t2.txt

# 目录创建软链接

# 1、创建目录

[root@localhost project]# mkdir d3

[root@localhost project]# ll -il

total 0

759984 drwxr-xr-x 2 root root 6 Oct 31 13:13 d3

25537624 lrwxrwxrwx 1 root root 6 Oct 31 13:11 t2_soft.txt -> t2.txt

25537617 -rw-r--r-- 1 root root 0 Oct 31 13:11 t2.txt

# 2、给目录创建软链接

[root@localhost project]# ln -s d3 d3_soft

[root@localhost project]# ll -il

total 0

759984 drwxr-xr-x 2 root root 6 Oct 31 13:13 d3

25537625 lrwxrwxrwx 1 root root 2 Oct 31 13:14 d3_soft -> d3

25537624 lrwxrwxrwx 1 root root 6 Oct 31 13:11 t2_soft.txt -> t2.txt

总结:

文件与目录均可以创建软链接

源文件被删除后,软链接失效

软链接与源文件是不同类型的文件

通过rm -f 软链接文件可以删除软链接

如果源文件删除,软链接失效,此时可以通过硬链接的方式恢复源文件,从而让软链接正常:

# 创建测试文件

[root@localhost project]# touch test.txt

# 创建硬链接

[root@localhost project]# ln test.txt test_hard.txt

[root@localhost project]# ll -il

total 0

25537617 -rw-r--r-- 2 root root 0 Oct 31 13:22 test_hard.txt

25537617 -rw-r--r-- 2 root root 0 Oct 31 13:22 test.txt

# 创建软链接

[root@localhost project]# ln -s test.txt test_soft.txt

[root@localhost project]# ll -il

total 0

25537617 -rw-r--r-- 2 root root 0 Oct 31 13:22 test_hard.txt

25537624 lrwxrwxrwx 1 root root 8 Oct 31 13:23 test_soft.txt -> test.txt

25537617 -rw-r--r-- 2 root root 0 Oct 31 13:22 test.txt

# 删除源文件

[root@localhost project]# rm -f test.txt

# 软链接失效

[root@localhost project]# ll -il

total 0

25537617 -rw-r--r-- 1 root root 0 Oct 31 13:22 test_hard.txt

25537624 lrwxrwxrwx 1 root root 8 Oct 31 13:23 test_soft.txt -> test.txt

# 恢复源文件

[root@localhost project]# ln test_hard.txt test.txt

# 软链接正常

[root@localhost project]# ll -il

total 0

25537617 -rw-r--r-- 2 root root 0 Oct 31 13:22 test_hard.txt

25537624 lrwxrwxrwx 1 root root 8 Oct 31 13:23 test_soft.txt -> test.txt

25537617 -rw-r--r-- 2 root root 0 Oct 31 13:22 test.txt

三、应用(文件的删除原理)

从上面软、硬链接的说明来看,它们有以下几点需要注意:

文件可以创建软、硬链接,目录只可以创建软链接

删除某个硬链接文件对源文件以及软链接文件无影响

删除软链接文件对源文件以及硬链接文件无影响

删除源文件对硬链接无影响,但软链接文件失效

每个目录中都有一个硬链接“.”以及上级目录的硬链接“.”;每在该目录创建一个子目录,其链接数增加1;但创建文件不会

文件的删除不仅仅是硬链接和源文件删除完就可以确保该文件删除,一个文件是否被删除,包含以下两方面:

硬链接数为0

被程序正在调用的次数为0

比较常见的就是日志文件被占用的实例,网站被访问,有日志记录,当日志文件沾满空间需要删除时,即使已经删除了该文件,但是还是没有彻底删除,这是为什么呢?就是因为虽然所有的硬链接被删除了,但是程序仍然占据着这个日志文件,所以可以有两种方式解决这个问题:

方式一、删除日志文件,重启服务

方式二、清空日志文件,不需要重启服务

标签:--,中硬,project,Linux,txt,root,链接,localhost

来源: https://www.cnblogs.com/shenjianping/p/13905772.html

linux硬链接含义,Linux中硬链接与软链接相关推荐

  1. sql修改链接服务器,sqlserver中修改链接服务器

    sqlserver中修改链接服务器 内容精选 换一换 RDS for SQL Server实例将默认开启SQL审计功能,并且不支持关闭.SQL审计功能会将对服务级.数据库级.表级的主要变更操作记录进审 ...

  2. linux日志配置含义,Linux操作系统中的日志功能详解

    日志系统将我们系统运行的每一个状况信息都使用文字记录下来,这些信息有助我们观察系统运行过程中正常状态和系统运行错误时快速定位错误位置的途径等;下面学习啦小编主要概述一下Linux操作系统中的日志功能. ...

  3. linux php d 含义,Linux中状态为D 或Z 的进程

    长期生活在 Linux 环境里,渐渐地就有一种环保意识油然而生.比如,我们会在登录提示里写上"悟空,我跟你说过叫你不要乱扔东西,乱扔东西是不对的.哎呀我话没说完你怎么把棍子扔掉了?月光宝盒是 ...

  4. linux指令英文含义,Linux —— 常见指令及其英文全称

    alias:给命令起别名 awk = "Aho Weiberger and Kernighan" ,三个作者的姓的第一个字母 bash:GNU Bourne-Again Shell ...

  5. linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因

    前言 先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面的那串提示符. 例如: 当 ...

  6. linux操作系统字段含义,Linux系统 /etc/fstab各个字段含义解释

    Linux系统 /etc/fstab各个字段含义解释 # fstab文件的作用 文件/etc/fstab存放的是系统中的文件系统信息.当正确的设置了该文件,则可以通过"mount /dire ...

  7. linux su 的含义,linux su命令的真正含义,linuxsu命令

    linux su命令的真正含义,linuxsu命令 linux中,我以root登录,和以其他用户登录然后使用su命令切换至root用户,有什么不一样,如果一样的话,我执行su命令之后,其他的用户还在不 ...

  8. linux编译安装含义,linux源码包编译安装详解

    linux下安装软件包有两种方法:源文件编译安装(source)和 rpm 安装. 1.源文件包安装的通用方法. 一般安装源代码的程序你得要看它的README,一般在它的目录下都有的. 01.配置: ...

  9. 怎么生成html链接,在HTML中生成链接

    需要Javascript为所谓的动态HTML或DHTML.可以这样做: function generateLink() { var brand = document.getElementById('c ...

最新文章

  1. python培训深圳-深圳哪里有Python培训?
  2. Kaggle入门五大步,跟着做就对了
  3. 自定义圆形控件 RoundImageView
  4. VScode中Python的交互式命令环境使用笔记
  5. 一个简单servlet程序
  6. android国家坐标,从坐标获取国家?
  7. c语言中判断输入是否为数字_C 判断
  8. 第 52 章 Web Server Optimization
  9. 前端学习(2137):webpack的介绍和安装
  10. net.sf.json.JSONArray之fromObject的坑
  11. 8.9 马蹄印 2493
  12. Spring:ReflectionUtils工具类使用一:Field
  13. MySQL Router 8 详解
  14. n++和++n的区别
  15. UEFI+GPT引导基础
  16. java 只有try 不catch_Java异常处理只有Try-Catch吗?
  17. 计算机专业助我成长400字作文,关于助我成长的作文400字(精选20篇)
  18. cinnamon桌面_使用Cinnamon增强您的Linux桌面
  19. 机械键盘的 黑轴/茶轴/青轴/红轴 有什么区别
  20. 什么是招标?招标的组织形式有哪些?

热门文章

  1. 浅谈matlab数学建模中@符号-----函数句柄
  2. 媒体邀约企业邀请媒体记者参加展览展会采访专访
  3. class org.springframework.scheduling.quartz.CronTriggerBean
  4. edge浏览器受信任_微软Edge浏览器警告用户不要信任《每日邮报》网站上的新闻...
  5. 【原创】电脑为什么会慢?C盘空间越来越小?怎么清理?请看本文
  6. 新浪微博XSS攻击代码简要解析
  7. Linux 管道的用法
  8. cookie和session的详细讲解
  9. 对Lua中Userdata的理解
  10. DataX Transformer