Магическое число представляет собой последовательность байт , который используется во всех файлах определенного формата, как правило , в заданном положении (часто в начале). Поскольку все файлы в этом конкретном формате имеют конкретную последовательность байтов в этой конкретной позиции, а большинство файлов в других форматах не имеют ее, магическое число - это способ узнать, в каком формате находится файл.
Здесь эта концепция применяется к формату файловой системы. Например, файловая система ext2 / ext3 / ext4 всегда имеет байты 0x53 0xEF
в позициях 1080–1081. А ReiserFS Файловая система всегда ReIsErFs
начиная с позиции 65588 (или ReIsEr2Fs
, и т.д., в более поздних версиях). Другие файловые системы имеют похожие магические числа. Инструменты файловой системы проверяют наличие магического числа (и, возможно, других подсказок), чтобы убедиться, что вы случайно не запустили их для данных, которые организованы в формате, с которым они не могут иметь дело и могут повредить. Если вы измените магическое число в файловой системе, обычные инструменты, скорее всего, откажутся его трогать; инструменты ремонта могут быть более умными и рассматривать плохое магическое число как одну из вещей, которые могут быть сломаны.
Команда file
распознает файлы на основе их магических чисел. Вы можете запустить, file -s /dev/sda1
чтобы увидеть, что он думает о разделе /dev/sda1
. Его решения основаны на базе данных, которая обычно находится в /etc/magic
или /usr/share/misc/magic
. Определенные команды могут использовать разные магические числа для распознавания форматов файлов, с которыми они могут справиться.
apt-get install source file
будет тянуть,file-x.yy/magic/Magdir/filesystems
который содержал именно ту информацию, которую искал вопрос (и я).file /dev/sda1
?file /dev/sda1
скажу только, что это узел устройства, он ничего не говорит о контенте. Вам нужно либоfile </dev/sda1
илиfile -s /dev/sda1
.file < /dev/sda1
не получается с текстом справки из файла (отсутствует параметр?), Но он-s
прекрасно работает. Спасибо.file - </dev/sda1
потому, что вы должныfile
явно указать, чтобы читать из стандартного ввода. Спасибо, я исправлю это.