当前位置: 首页 > news >正文

Linux链接文件

链接文件解释说明

链接文件分为两种:硬链接(hard link)和软连接(symbolic link),两种链接的本质区别关键点在于inode。

inode解释

inode包含文件元信息,具体来说有以下内容:

  • 文件的字节数;

  • 文件拥有这的user ID;

  • 文件的Group ID;

  • 文件的读、写、执行权限;

  • 文件的时间戳,共有三个,ctime☞inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  • 链接数,即有多少文件名指向这个inode;

  • 文件数据block的位置;

硬链接:当系统要读取一个文件时,就会先去读inode table,一个文件对应一个inode,然后在去根据inode中的信息到块区域去讲数据取出来,而硬链接是直接使用了和源文件相同的inode,硬链接文件直接链接到文件放置的块区域,也就是说,进行硬链接的时候实际上该文件内容没有任何变化,只是指定了相同的inode。硬链接是直接将文件和硬盘链接的
硬链接有两个限制:

  1. 不能跨文件系统,因为不同的文件系统有不同的inode table;

  2. 不能链接目录;

软连接:跟硬链接不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,它会把读取的行为转发到该文件所link的文件上。
例如:现在有文件a,我们做了一个软链接文件b(只是一个链接文件,非常小),b指向了文件a,当读取b时,那么就会把读取的动作转发到a上,这样就读取到了a文件,多以,当我们删除文件a时,文件b并不会被删除,但是再读取b时,会提示无法打开文件,然而,当我们删除b时,a是不会有任何影响的。
由上可以看出,似乎硬链接比较安全,因为即使某一个文件被删掉了,只要有任何一个文件存在,那么改文件对用的inode就还在,那么文件就不会消失不见!不过,不幸的是硬链接的限制太多了,包括无法做目录的link,所以在用途上面比较受限制的!反而是软链接的使用方向较广。

建立软链接和硬链接方法

ln命令:

ln [-s] [来源文件] [目的文件]

ln常用的选项就一个-s ,如果不加就是建立硬链接,加上就是建立软链接。

clipboard.png

由上可以看出硬链接删除源文件passwd,空间依旧不变。

clipboard.png

硬链接不能用于目录

clipboard.png

如果删除掉源文件,则软链接文件不能读取了,而且使用命令ll查看发现颜色也变了。

clipboard.png

由上说明目录是可以软链接的。

硬链接不占用空间,软链接占用空间。

命令du:

查看磁盘剩余空间和文件夹大小
参数含义如下:

  • -s:对每个names参数只给出占用的数据块总数;

  • -a:递归地显示指定目录中各文件占用的数据块数,若既不指定-s,也不指定-a,则只显示names中每一个目录及其中的各子目录所占的磁盘块数;

  • -b:以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位);

  • -k:以1024字节为单位列出磁盘空间使用情况;

  • -c:最后在加上一个总计(系统缺省设置);

  • -l:计算所有的文件大小;

相关文章:

  • js跳出循环
  • 难以避免的泄漏事故:怎么解?
  • python 基础 4.5 用函数实现九九乘法表
  • html回顾随笔1(*^__^*)
  • Java新版本的开发已正式进入轨道,版本号18.3
  • npm cli 调试方法
  • socket接受大的数据
  • redis开启远程访问
  • AE与AO的区别
  • Java 并发集合的实现原理
  • 如何利用C++搭建个人专属的TensorFlow
  • 基于HAProxy的高性能缓存服务器nuster
  • [20171106]配置客户端连接注意.txt
  • 分享Silverlight/WPF/Windows Phone一周学习导读(07月25日-07月31日)
  • Python类的一般形式和继承
  • dva中组件的懒加载
  • fetch 从初识到应用
  • Just for fun——迅速写完快速排序
  • Koa2 之文件上传下载
  • Spring Cloud Feign的两种使用姿势
  • spring security oauth2 password授权模式
  • SpringCloud集成分布式事务LCN (一)
  • uni-app项目数字滚动
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 机器学习学习笔记一
  • 入手阿里云新服务器的部署NODE
  • ​用户画像从0到100的构建思路
  • !!Dom4j 学习笔记
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $(selector).each()和$.each()的区别
  • $.ajax()方法详解
  • ${ }的特别功能
  • (3)(3.5) 遥测无线电区域条例
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (办公)springboot配置aop处理请求.
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (十六)串口UART
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (算法)Game
  • (转)winform之ListView
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)Google Chrome调试JS
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .Net(C#)自定义WinForm控件之小结篇
  • .net开发时的诡异问题,button的onclick事件无效
  • .net生成的类,跨工程调用显示注释
  • /var/lib/dpkg/lock 锁定问题
  • ::前边啥也没有
  • @Query中countQuery的介绍
  • [ NOI 2001 ] 食物链
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C#]扩展方法
  • [c#基础]值类型和引用类型的Equals,==的区别