Linux文件系统:minix文件系统二进制分析4(rm删除)

本文详细分析了在Linux下使用rm命令删除minix文件系统中file.txt文件后,data区、inode区的具体变化,揭示了文件删除背后的原理,指出内核通过修改inode节点实现而非物理删除数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列博文

Linux文件系统:minix文件系统二进制分析1

Linux文件系统:minix文件系统二进制分析2

Linux文件系统:minix文件系统二进制分析3(硬链接与软链接)

目录结构

上一章节最后保持的目录结构

image-20211210100114235

删除file.txt文件
 rm file.txt
现在的目录结构

image-20211210100206721

二进制dump

hexdump -C /dev/sdb > chapter4.hex

  二进制内容如下:

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  60 15 00 40 01 00 02 00  b0 00 00 00 00 1c 08 10  |`..@............|
00000410  8f 13 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000420  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000800  37 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |7...............|
00000810  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000aa0  00 00 00 00 00 00 00 00  00 00 00 00 fe ff ff ff  |................|
00000ab0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000c00  37 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |7...............|
00000c10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000013e0  00 00 00 00 00 00 00 00  00 00 fe ff ff ff ff ff  |................|
000013f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00001400  ed 41 00 00 00 01 00 00  78 b5 b2 61 00 03 b0 00  |.A......x..a....|
00001410  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001420  ed 41 00 00 60 00 00 00  9d 1c a1 61 00 02 b1 00  |.A..`......a....|
00001430  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001440  00 00 00 00 0c 00 00 00  77 1c a1 61 00 00 b2 00  |........w..a....|
00001450  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001460  a4 81 00 00 08 00 00 00  9d 1c a1 61 00 02 b3 00  |...........a....|
00001470  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001480  ff a1 00 00 16 00 00 00  7f 18 b0 61 00 01 b4 00  |...........a....|
00001490  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0002c000  01 00 2e 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c020  01 00 2e 2e 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c040  02 00 64 69 72 64 65 6d  6f 00 00 00 00 00 00 00  |..dirdemo.......|
0002c050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c060  00 00 66 69 6c 65 2e 74  78 74 00 00 00 00 00 00  |..file.txt......|
0002c070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c080  04 00 68 61 72 64 6c 69  6e 6b 32 66 69 6c 65 6c  |..hardlink2filel|
0002c090  65 76 65 6c 32 2e 74 78  74 00 00 00 00 00 00 00  |evel2.txt.......|
0002c0a0  05 00 73 6f 66 74 6c 69  6e 6b 32 66 69 6c 65 6c  |..softlink2filel|
0002c0b0  65 76 65 6c 32 2e 74 78  74 00 00 00 00 00 00 00  |evel2.txt.......|
0002c0c0  00 00 2e 73 77 70 00 00  00 00 00 00 00 00 00 00  |...swp..........|
0002c0d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c0e0  00 00 2e 73 77 70 78 00  00 00 00 00 00 00 00 00  |...swpx.........|
0002c0f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0002c400  02 00 2e 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c410  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c420  01 00 2e 2e 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c430  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0002c440  04 00 66 69 6c 65 6c 65  76 65 6c 32 2e 74 78 74  |..filelevel2.txt|
0002c450  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0002c800  68 65 6c 6c 6f 20 6d 69  6e 69 78 0a 00 00 00 00  |hello minix.....|
0002c810  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0002cc00  6c 65 76 65 6c 20 32 0a  00 00 00 00 00 00 00 00  |level 2.........|
0002cc10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0002d000  64 69 72 64 65 6d 6f 2f  66 69 6c 65 6c 65 76 65  |dirdemo/fileleve|
0002d010  6c 32 2e 74 78 74 00 00  00 00 00 00 00 00 00 00  |l2.txt..........|
0002d020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
01000000

删除file.txt后的二进制分析

data区的变化

  对比删除file.txt文件前后,根目录inode节点数据区的变化,可以看到file.txt文件的第一个字节由03变为了00,删除之前inode3为file.txt的inode节点,删除之后file.txt文件指向的inode为0,即空节点。

  可以得出结论:当我们在命令行下执行rm file.txt命令删除根目录下的file.txt文件后,内核并没有将根目录inode节点指向的数据区中关于file.txt的信息删除,仅仅是将其指向的inode节点由03修改为了00。

image-20211210100745768

inode区的变化

  对比删除file.txt文件前后,inode区二进制数据的变化,如下图所示,可以看到inode3中的第14个字节由01变为了00,说明引用本节点的文件名为0个,即没有。前两个字节(文件的类型和权限属性)也变为了00 00。

image-20211210105508806

file.txt文件的数据区

  对比删除file.txt文件前后,如下图所示,我们可以看到file.txt数据区的内容并未发生变化。

image-20211210110147373

总结

  在linux执行rm操作,并未将操作的文件信息全部从硬盘上抹去,而是通过修改inode节点属性和文件所在目录的data区中相关文件指向的inode节点值来完成文件的删除操作,所以数据还是能恢复回来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明故宫的记忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值