Linux系统中的链接文件
日志文件系统ext xfs里
1.节点区域 记录的都是文件属性,ls -l file可以看到的内容 ,文件的元数据inode tables
2.数据区域 放的是cat file看到的一切,数据块
cat 找的是数据区域
一个文件对应一个节点号,一个节点号对应一个数据区域
硬链接 :一个节点号对应多个数据区域,节点区域不够,只复制数据区域而不复制节点区域。
copy是复制节点区域和数据区域 ln
软链接:多个节点号对应一个数据区域,相当于windows的快捷方式
ln -s +绝对路径 s=soft ,满权限是因为不能让链接影响真实文件 ->的管理。
ls -i 可以看到节点号
删除:删除的是节点号,节点号找不到数据区域,
ln /mnt/ping /mnt/zhang 生成硬链接,ls -i两个文件的节点号一致,前面是存在的,后面是新建立的。
ln -s /mnt/ping /mnt/westos 生成软链接,ls -l可看
rm -fr /mnt/ping 软链接文件westos失效打不开
touch /mnt/ping 软链接又恢复了
ext4文件系统
- Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统,则可以参考下图。
- ext4 文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。
- inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。大家如果仔细查看,就会发现 inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。
- block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。
- 由此,我们可以知道以下 2 个重要的信息:
1.每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
2.如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块;
Linux系统中的链接文件
- 在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。
- 查看linux系统中哪些是链接文件。
- 上图文件列表中第一列权限位标识第一个字符显示的是文件类型,-为一般文件,d为目录,而l显示的就是链接文件。
硬链接
- 硬链接是指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index)或者Inode,它是文件或者目录在一个文件系统中的唯一标识,文件的实际数据放置在数据区域(data block),它存储着文件重要参数信息,也就是元数据 (metadata),比如创建时间、修改时间、文件大小、属主、归属的用户组、读写权限、数据所在block号等,如下图所示。
- 在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。不过硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。之所以文件建立了硬链接就会防止数据误删,是因为文件系统的原理是,只要文件的索引节点还有一个以上的链接(仅删除了该文件的指向),只删除其中一个链接并不影响索引节点本身和其他的链接(数据的实体并未删除),只有当最后一个链接被删除后,此时如果有新数据要存储到磁盘上,被删除的文件的数据块及目录的链接才会被释放,空间被新数据暂用覆盖。
软链接
- 软链接(也叫符号链接),类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建。
软链接作用: - 便于文件的管理,比如把一个复杂路径下的文件链接到一个简单路径下方便用户访问。
- 节省空间解决空间不足问题,某个文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中。
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
软连接和硬链接的特点
软链接:
- 软链接是存放另一个文件的路径的形式存在。
- 软链接可以跨文件系统 ,硬链接不可以。
- 软链接可以对一个不存在的文件名进行链接,硬链接必须要有源文件。
- 软链接可以对目录进行链接。
硬链接:
- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接。
- 硬链接只有在同一个文件系统中才能创建。
- 删除其中一个硬链接文件并不影响其他有相同 inode 号的文件。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
ln命令
- linux系统可以用ln命令来创建链接文件。
- ln命令格式:
ln [参数] [源文件或目录] [目标文件或目录]
主要参数:
-i 交互模式,文件存在则提示用户是否覆盖。
-s 软链接(符号链接)。如果不加 “-s” 选项,则建立硬链接文件
-d 允许超级用户制作目录的硬链接。
-b 删除,覆盖以前建立的链接
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
软链接 (符号链接) ln -s source target
硬链接 (实体链接)ln source target
举例:
- 给文件创建硬链接:
- 给文件创建软链接:
- 我们知道硬链接是有着相同 inode 号仅文件名不同的文件,用
ls -li
命令查看。
- 硬链接不能指向目录
- 软链接可以
- 删除文件测试:
- 删除软链接
本文转载自:
http://c.biancheng.net/view/740.html
https://www.cnblogs.com/songgj/p/9115954.html
Linux系统中的链接文件相关推荐
- 实例讲解Linux系统中硬链接与软链接的创建
导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说 ...
- java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...
- Linux系统中运行.sh文件的几种方法
在Linux系统中执行.sh文件的几种方法: 1. cd到.sh文件所在的目录,然后执行./xxx.sh [前提:该./sh文件要有可执行的权限,chmod u+x xxx.sh] 2. 在任何 ...
- 在linux终端中重命名文件,Linux系统中重命名文件的方法有哪些
今天小编要跟大家分享的文章是关于Linux系统中重命名文件的方法有哪些.正在从事Linux运维工作和学习Linux运维知识的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助. 在Linux ...
- 如何快速找出Linux系统中的大文件?
今日主题: 如何快速找出Linux系统中的大文件? 在前面的文章中,我们讲到了压测时磁盘空间被占满的问题,可以跟今天的文章结合着看. 在性能测试中,我们经常要关注系统磁盘空间,防止因磁盘空间占满而导致 ...
- 【Linux学习之挂载】在Linux系统中如何把文件拷贝到U盘
在Linux系统中如何把文件拷贝到U盘? 题目:将 home/guestuser1/myfile 文件复制到U盘中进行备份 答: [huahua@localhost ~]$ su [root@loca ...
- linux 下删除批量文件命令,linux系统中批量删除文件与空文件删除的命令
linux命令在系统中有两种类型:内置Shell命令和Linux命令.接下来是小编为大家收集的linux系统中批量删除文件与空文件删除的命令,希望能帮到大家. linux系统中批量删除文件与空文件删除 ...
- linux系统中一切皆文件
linux系统中一切皆文件 linux下"一切皆文件"是Unix/Linux的基本哲学之一. 普通文件.目录.字符设备.块设备和网络设备(套接字)等在Unix/Linux都被当做文 ...
- Linux系统中添加库文件路径的方法
库文件在链接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用 ...
最新文章
- Java项目:旅游网站管理系统设计和实现(java+springboot+jsp+mysql+spring)
- $this-load-view()
- 产品「工具人」如何破局?
- MySQL sql99语法—非等值连接
- hdu1686:KMP板子
- 使用OAuth 2 / OpenID Connect的SSO的Spring Boot 2本机方法
- Python之浅谈运算符
- 链路层:ARP和RARP命令arp -a/tcpdump -en
- Mac精品软件分享第一期
- 众说纷“云”,看生态驱动工业物联网落地
- Python 进阶:全面解读高级特性之切片!
- Idea运行报错Error running ‘Application‘: Command line is too long的解决方法
- JZ5-用两个栈实现队列
- (栈)栈 给定push序列,判断给定序列是否是pop序列
- Ansys-模态分析基础上的谱分析学习收获
- tdk磁材手册_TDK磁性材料市场.ppt
- Microsoft SQL Server 2008 R2官方下载地址
- 维吉尼亚密码(Vigenere)
- 好一个“Exchange20003”
- html autocomplete 多个参数切换