Je crée un programme qui prend un hexdump d'un fichier, afin que je puisse ensuite le transmettre quelque part et faire reconstruire le fichier, mais l'hexdump ne concerne que le contenu du fichier, j'ai également besoin d'obtenir les propriétés du fichier, alors où faire -Je obtenir les propriétés de ce fichier, puis les appliquer au nouveau fichier que je crée à partir de ce hexdump? J'utilise bash pour cela, mais il ne s'agit pas vraiment du code, mais plutôt de l'endroit où le trouver, bien que vous puissiez le faire, il s'agit du code car, évidemment, je vais avoir besoin de quelques commandes. J'utilise Ubuntu GNOME 15.04, avec GNOME Shell et GNOME 3.16.
Les attributs de fichier sont stockés dans des inodes. Les attributs que chaque inode stocke sont répertoriés dans POSIX Inode Specification . Lorsque nous utilisons ls -l
Ou stat
ou tout autre programme qui nous obtient, l'attribut file utilise l'appel système stat(2)
en dessous.
Les inodes sont désormais des propriétés dépendantes du système de fichiers, ils sont créés sous forme de nombres fixes lors de la création du système de fichiers. Il existe un programme dumpe2fs
Pour lire le superbloc d'un système de fichiers ext*
Afin que nous puissions avoir une idée, par exemple :
Sudo dumpe2fs -h /dev/sda1
Vérifions maintenant les propriétés liées à l'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
Comme vous pouvez le voir, vous obtenez suffisamment d'informations comme le premier inode, la taille des inodes, le nombre d'inodes, etc. Si vous multipliez Inode count
Et Inode size
, Vous obtenez combien est réservé pour les inodes.
Les programmes de copie de fichiers tels que cp
ou rsync
ont l'option -a
(Archive) pour copier les attributs stockés sur l'inode d'un fichier, vous devez donc les rechercher ou des options similaires disponibles dans le programme que vous êtes susceptible d'utiliser.
Pour conserver les attributs des fichiers et les utiliser plus tard, vous pouvez vérifier cette réponse du puissant Gilles .
Ce n'est peut-être pas une réponse complète, mais c'est ce que j'ai pu trouver grâce à mes recherches.
Les attributs de fichier sont stockés dans inodes
et les "tables d'inode" sont généralement dispersées dans le système de fichiers. En général, pour trouver où se trouvent les tables d'inode (au moins dans ext3
système de fichiers), vous pouvez exécuter:
Sudo dumpe2fs /dev/<device> | fgrep 'Inode table'
et vous pouvez faire un vidage hexadécimal des données brutes sur le bloc où résident les inodes ( Remarque Je n'ai pas essayé cette commande!):
Sudo dd if=/dev/<device> ibs=4096 skip=<inode block> count=1 | hexdump
Remplace le <device>
et le <inode block>
avec le décalage de bloc par rapport à la table d'inode que vous souhaitez consulter.
source: LinuxQuestions , SO question