我不清楚为什么会发生这种情况。重现:
# 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”。
任何人都可以解释为什么会这样?包含数据的块不应该被修改吗?
1条答案
按热度按时间cbwuti441#
因为它是一个usb棒,所以不太可靠的重写到同一位置,所以改变将意味着一个“新”文件被创建,旧文件被留下,但不再引用,没有理由覆盖,除非它必须如果有其他地方把文件少“覆盖”磨损一个特定的扇区,如果多个更改