linux Ext3文件系统:为什么编辑现有文件后块会发生更改?

siotufzp  于 2022-11-28  发布在  Linux
关注(0)|答案(1)|浏览(117)

我不清楚为什么会发生这种情况。重现:

# create file
$ touch mydocument.txt
$ echo "Hallo welt." > mydocument.txt
$ ls -li
24529 -rw-rw-r-- 1 tsurugi tsurugi    33 Jan 20 11:12 mydocument.txt

# So, I anaylse the inode with ID 24529 using the sleuth kit:
$ istat /dev/sdb 24529
...
Direct Blocks:
100352

因此,文件的内容应位于块号100352中(块大小为4096字节,32G U盘上的ext3文件系统)
使用dd检查:(还有一些数学......)

$ sudo dd if=/dev/sdb status=none bs=32 count=1 skip=12845056 | hexdump -Cv
00000000  48 61 6c 6c 6f 20 77 65  6c 74 0a 00 00 00 00 00  |Hallo welt......|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020

到目前为止,一切都很好,内容在那里。现在我编辑文件,之后,直接块是不同的(再次检查istat,相同的inode),包含新的内容,和旧的块仍然充满了“Hello world”。
任何人都可以解释为什么会这样?包含数据的块不应该被修改吗?

cbwuti44

cbwuti441#

因为它是一个usb棒,所以不太可靠的重写到同一位置,所以改变将意味着一个“新”文件被创建,旧文件被留下,但不再引用,没有理由覆盖,除非它必须如果有其他地方把文件少“覆盖”磨损一个特定的扇区,如果多个更改

相关问题