Btrfs вычисляет контрольную сумму crc32c для каждого файла. Есть ли способ узнать, какая контрольная сумма хранится (в отличие от простого чтения файла и его пересчета)?
Btrfs вычисляет контрольную сумму crc32c для каждого файла. Есть ли способ узнать, какая контрольная сумма хранится (в отличие от простого чтения файла и его пересчета)?
Ответы:
Btrfs вычисляет контрольную сумму crc32c для каждого файла.
Это не правильно. Обе файловые системы с контрольной суммой с открытым исходным кодом (ZFS и BTRFS) вычисляют контрольную сумму для каждого логического блока (безымянный источник, используемый Awe, является правильным). Это контрольная сумма данных на диске.
Если в файловой системе включено сжатие (все более распространенный параметр), эта контрольная сумма данных после сжатия. Это означает, что даже если файл помещается в один логический блок, вполне возможно (и все более вероятно), что данные контрольной суммы файловой системы будут для вас бесполезны.
Если вам нужна контрольная сумма файла, лучший способ получить ее - вычислить ее.
Из аналогичного ответа у суперпользователя:
Я не верю, что можно извлечь контрольные суммы на уровне блоков из файловой системы ZFS, но поскольку контрольные суммы находятся на уровне блоков, а не на уровне файлов, это, вероятно, в любом случае вам не поможет.
Смысл. Контрольные суммы не создаются для каждого файла btrfs. Упоминается, что @superuser есть патч для добавления функциональности в подкоманду inspect-internal: btrfs inspect-internal dump-csums Этот дамп - для всех блоков, занятых данным файлом - контрольных сумм блоков. Множественное, если файл не помещается в один блок.
Я думаю, что это невозможно через CLI btrfs, но здесь есть исходный код, который, я надеюсь, может помочь вам прочитать chechsum для одного блока в файловой системе btrfs. Нужен корень.