首页 > 技术文章 > 复习之软链接和硬链接

weilanxuesre 2022-02-12 11:47 原文

1.查看被删除的文件(还未释放)

lsof | grep deleted

 

2.显示目录树 tree

常见选项:

-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定wild-card pattern匹配到的路径

 

3.创建目录 mkdir

常见选项:

-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限

 

4.删除空目录 rmdir

常见选项:

-p 递归删除父空目录
-v 显示详细信息

注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

 

5.inode 表结构

1)每个文件的属性信息,比如:文件的大小,时间,类型等,称为文件的元数据(meta data)。这此元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个 文件的元数据信息

每一个inode表记录对应的保存了以下信息:

inode number 节点号
文件类型
权限
UID
GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据

 

 2)目录

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系

文件引用一个是 inode号
人是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射

3)inode表和目录

 

 4)cp和inode

cp 命令:

分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件

5)rm和inode

rm 命令:

链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

6)mv和inode

如果mv命令的目标和源在相同的文件系统,作为mv 命令
    用新的文件名创建对应新的目录项
    删除旧目录条目对应的旧的文件名
    不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统, mv相当于cp和rm

 

6.显示文件节点

ls -i

看每个分区最多存放的节点编号:

df -i

 

7.为什么内存未满却提示没有空间:

因为序列号用完了。

 

8.硬(hard)链接

1)硬链接本质上就给一个文件起一个新的名称,实质是同一个文件

2)硬链接特性

创建硬链接会在对应的目录中增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文
件被删除
不能跨越驱动器或分区
不支持对目录创建硬链接

3)格式:

ln filename [linkname ]

 

9.符号 symbolic (或软 soft)链接

1)一个符号链接指向另一个文件,就像 windows 中快捷方式,软链接文件和原文件本质上不是同一个文件

2)软链接特点

一个符号链接的内容是它引用文件的名称
可以对目录创建软链接
可以跨分区的文件实现
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的
引用计数
在创建软链接时, 如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目
录,但是软链接的路径如果是相对路径,则是相对于当前工作目录

3)格式:

ln -s filename [linkname]

4)范例:

#绝对路径
ln -s /data/dir /data/dirlink
#相对路径
cd /data
ln -s ../data/dir /root/dirlink
rm -rf /data/dirlink    #删除软链接本身,不会删除源目录内容
rm -rf /data/dirlink/   #删除源目录的文件,不会删除链接文件
#查看链接文件指向的原文件
readlink /data/dirlink
[root@centos8 ~]#readlink /proc/$$/exe
/usr/bin/bash

 

10.硬链接和软链接区别总结

1. 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件
2. 跨设备
硬链接:不支持
软链接:支持
3. inode
硬链接:相同
软链接:不同
4. 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化
5. 文件夹
硬链接:不支持
软链接:支持
6. 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件的相对路径是相对于链接文件的相对路径
7. 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问
8. 文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无关
9. 文件大小
硬链接: 和源文件相同
软链接: 源文件的路径的长度

 

11.生产案例

案例1:提示空间满 No space left on device,但 df 可以看 到空间很多,为什么?

答:节点编号被用完了。

案例2:提示空间快满,使用 rm 删除了很大的无用文件后,df 仍然看到空间不足,为什么?如何解决?

如果程序正在被使用,删除文件后,空间不会释放,原因可能是rm的文件正在被使用,所以不能删除,有一下两种方法:

使用lsof | grep deleted 查看是否正在被使用,如果进程不重要,可以kill杀死进程。
如果进程重要不可断开,cat /dev/null > fi.txt清空正在使用的文件,释放空间。

 

2022-2-12 11:47

推荐阅读