🍖软连接与硬链接
引入
1.硬链接与软连接
Linux 系统中有软链接和硬链接两种特殊的 "文件"
2.inode
是什么
⛅要解释清楚两者的区别和联系需要先说清楚 linux 文件系统中的 inode 这个东西
⛅当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)
⛅这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个 文件的 inode
⛅Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber
⛅ 其他信息: 创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息。
⛅查看一个文件的元数据: "# stat [文件名]"
一.软连接
1.什么是软链接
可以看成是 Windows 中的快捷方式, 可以让你快速链接到目标文件或目录, 它找到的是原文件名, 通过原文件名再找到真实的数据, 它自身有 inode
2.语法
ln -s [源文件/目录路径] [软连接放置的路径及名字]
#设置连接时源文件要使用绝对路径, 不然链接会变红,无效
3.软连接示例
- 文件软连接
在 "/tmp" 目录下创建 "/root" 目录下的 "a.txt" 软连接
- 目录软连接
在 "/tmp" 目录下创建 "/root" 目录下的 "/song" 的软连接
二.硬链接
1.什么是硬链接
它透过文件系统的 inode 来产生新的文件名, 注意不是产生新的文件, 换而言之, 就是一个文件使用了多个别名, 这个别名与源文件名都指向源文件的 inode
2.语法
ln [源文件路径] [硬连接放置的路径及名字]
#目录不能创建硬链接
#不能跨分区系统创建硬链接
3.硬链接示例
- 文件硬链接
在"/tmp"目录下创建"/root"目录下的"a.txt"的硬链接
- 无法创建目录硬链接
三.硬链接与软连接的区别
🐼 ln -s 创建软连接, ln 创建硬链接
🐼 目录不能创建硬链接, 且不能跨分区系统创建
🐼 软连接支持文件和目录, 且能跨分区系统, 常用
🐼 硬链接文件与源文件 inode 相同, 而软连接是不同的
🐼 删除软连接文件和硬链接文件, 对源文件没有任何的影响
🐼 删除源文件, 软连接失效, 硬链接无影响(还可以访问内容)
🐼 删除源文件和硬链接, 整个文件会被真正的删除
四.软连接, 硬链接与 拷贝 的区别
1.软连接
软连接建立的链接文件与源文件并不是同一个文件, 就是一个快捷方式, inode号也不同
2.硬链接
硬链接实际上是文件的一个别名, 链接文件和源文件实际上是同一个文件, 修改源文件或者硬链接文件, 相互都会改变
3.拷贝
复制源文件, 产生一个全新的文件, 与源文件没有关系了, 修改新文件内容与源文件无关
4.通过 ls -i
来查看 inode
号
查看 inode 可判断是否是同一文件
五.磁盘空间问题
1.磁盘满了?
通常指两个方面
- inode 号用完了
- 磁盘空间用完了
- 而通常情况下 inode号是够用的, 磁盘空间经常不够用
2.当指定磁盘空间满了怎么办?
- df 查看磁盘空间及 inode号使用情况
- 假设 /boot 这个目录关联的磁盘 /dev/sda2空间使用已被使用100%
- 当你创建文件和写文件的时候都无法操作
- 但是有一些软件或者配置必须在 /boot/data 下才能找到(或者"/boot"下的其他目录)
3.解决方案
- 首先插上一块新的磁盘, 查看磁盘是否存在
- 不格式化(制作文件系统)的话可能会报错
- 格式化新磁盘(制作文件系统) mkfs.xfs /dev/sdb / mkfs.ext4 /dev/sdb
- 然后让 /boot/data关联(挂载)上去 mount /dev/sdb /boot/data
- 之后就可以在 /boot/data 里面写文件了, 路径还是这个路径