Где хранятся свойства файла в реальной файловой системе?

Я создаю программу, которая принимает hexdump файла, чтобы затем я мог передать его куда-нибудь и восстановить файл, однако hexdump состоит только из содержимого файла, мне также нужно получить свойства файла, Итак, где я могу получить свойства этого файла, а затем применить их к новому файлу, который я создаю из этого hexdump? Я использую bash для этого, но на самом деле речь идет не о коде, а о том, где его найти, хотя вы могли бы рассказать о коде, потому что, очевидно, мне понадобятся некоторые команды. Я использую Ubuntu GNOME 15.04 с GNOME Shell и GNOME 3.16.

2
задан 23 August 2015 в 14:45

2 ответа

Атрибуты файла хранятся в inodes. Атрибуты, что каждый inode хранилища перечислен в POSIX Спецификация Inode. Когда мы используем ls -l или stat или любая другая программа, которые получают нас атрибут файла, использует stat(2) системный вызов внизу.

Теперь inodes являются зависимым свойством файловой системы, они создаются как постоянные числа, когда файловая система создается. Существует программа dumpe2fs считать суперблок a ext* файловая система так, чтобы мы могли получить некоторое представление, например:

sudo dumpe2fs -h /dev/sda1

Теперь давайте проверим, что inode связал свойства:

$ sudo dumpe2fs -h /dev/sda1 | grep -i 'inode.*:'

Inode count:              9379840
Free inodes:              9297243
Inodes per group:         8192
Inode blocks per group:   512
First inode:              11
Inode size:               256
Journal inode:            8

Поскольку Вы видите, что Вы получаете достаточно информации как первый inode, inode размер, inode количество и т.д. Если Вы делаете умножение Inode count и Inode size Вы добираетесь, сколько резервируется для inodes.

Программы копирования файла такой как cp или rsync имейте -a (архив), который опция скопировать атрибуты сохранила на inode для файла, таким образом, необходимо искать те или подобные опции, доступные в программе, Вы, вероятно, будете использовать.

Для сохранения атрибутов файлов и затем используют его позже, можно проверить этот ответ от могущественного Gilles.

2
ответ дан 24 August 2015 в 00:45
  • 1
    16.04 три более новые года, и, самое главное, поддерживал , что означает, что это получает регулярные обновления системы защиты. 13.04 больше не поддерживается (и это wasn' t версия Долговременной поддержки так или иначе). Прочитайте связанную статью, она предоставляет постепенную процедуру. – AlexP 15 November 2016 в 01:28

Это не может быть полным ответом, но это - то, что я смог найти от своего исследования.

Атрибуты файла хранятся в inodes, и 'inode таблицы' обычно рассеиваются всюду по файловой системе. В целом, для нахождения, где у Вас есть inode таблицы (по крайней мере, в ext3 файловая система) можно работать:

sudo dumpe2fs /dev/<device> | fgrep 'Inode table'

и можно сделать hexdump необработанных данных в блоке, где inodes находится ( Примечание , я не попробовал эту команду!):

sudo dd if=/dev/<device> ibs=4096 skip=<inode block> count=1 | hexdump

Замена <device> и <inode block> со смещением блока к inode таблице Вы хотите посмотреть на.

источник: LinuxQuestions, ТАКИМ ОБРАЗОМ вопрос

0
ответ дан 24 August 2015 в 00:45

Другие вопросы по тегам:

Похожие вопросы: