Утилита / Инструмент для получения хеш-значения блока данных в ext3
Я искал утилиту / инструмент, который может предоставить md5sum (или любую уникальную контрольную сумму) блока данных внутри структуры inode ext3.
Требуется проверить, обнуляются ли определенные блоки данных после определенной операции.
Я новичок в файловых системах и не знаю, может ли какой-либо существующий инструмент выполнить эту работу, или мне нужно самому написать эту тестовую утилиту.
Спасибо...
1 ответ
Коллега предоставил очень элегантное решение. Вот сценарий. Ему нужно имя файла в качестве параметра и предполагается, что размер блока файловой системы равен 4 КБ.
- Дальнейшее расширение этой идеи:
Если вам известны блоки данных, связанные с файлом (stat), вы можете использовать опцию 'skip' команды 'dd' и создавать небольшие файлы, каждый размером 1 блок. Кроме того, вы можете получить md5sum этих блоков. Таким образом, вы можете получить md5sum напрямую с блочного устройства. Не то, что вы хотели бы делать каждый день, но хороший аналитический трюк.
================================================== ================================
#!/bin/bash
absname=$1
testdir="/root/test/"
mdfile="md5"
statfile="stat"
blksize=4096
fname=$(basename $absname)
fsize=$( ls -al $absname | cut -d " " -f 5 )
numblk=$(( fsize/blksize ))
x=1
#Create the test directory, if it does not exist already
if [[ ! -d $testdir ]];
then
`mkdir -p $testdir`
fi
#Create multiple files from the test file, each 1 block sized
while [[ $x -le $numblk ]]
do
(( s=x-1 ))
`dd if=$absname of=$testdir$fname$x bs=4096 count=1 skip=$s`
`md5sum $testdir$fname$x >> $testdir$mdfile`
(( x=x+1 ))
done