У меня проблема с вычислением md5sum. У меня есть инструмент восстановления, который архивирует метаданные файла (inode), а также вычисляет md5sum их файлов и сохраняет их в sqlite db во время установки. Когда файл будет удален / удален. инструмент восстанавливает удаленный файл, используя метаданные из sqlite-db. Он восстанавливает файл. Теперь я хотел убедиться, что восстановленный файл точно такой же, как и исходный файл. Таким образом, пересчитал восстановленные файлы md5sum, как показано ниже. Проблема в том, что, как ни странно, для нескольких файлов я вижу (при использовании cat) содержимое файла точно такое же (как и прежде, чем оно было удалено), а команда stat показывает тот же вывод (кроме другого номера inode), но md5sum отличается.
Следующие 2 файла имеют одинаковое содержимое - таким образом, наличие другого номера инода не влияет на md5sum.
764efa883dda1e11db47671c4a3bbd9e /test/hi1.txt
764efa883dda1e11db47671c4a3bbd9e /test/hi.txt
Есть мысли, как мне поступить с этим?
char file_location[512] = {0};
char md5_cmd[512], md5sum[34];
FILE *pf;
//some recovery stuff goes here...
//Recompute md5 of recovered file
memset(md5_cmd, '\0', 512);
sprintf(md5_cmd, "md5sum %s", file_location);
pf = popen(md5_cmd, "r");
if (!pf) {
fprintf(stderr,"Could not open pipe");
return;
}
// get data
fgets(md5sum, 34, pf);
if (pclose(pf) != 0)
fprintf(stderr, "Error: close Failed.");
fprintf(stdout, "Md5sum is %s", md5sum);