web-dev-qa-db-fra.com

Un moyen simple de voir le contenu des répertoires dans les systèmes de fichiers Linux / Unix

Dans le passé, j'ai appris que dans les systèmes de fichiers Linux/Unix, les répertoires ne sont que des fichiers, qui contiennent les noms de fichiers et les numéros d'inode des fichiers à l'intérieur du répertoire.

Y a-t-il un moyen simple de voir le contenu d'un répertoire? Je veux dire que les noms des fichiers et les inodes sont stockés/organisés.

Je n'ai pas non à la recherche de ls, find ou quelque chose de similiaire. Je ne veux pas non plus voir le contenu des fichiers dans un répertoire. Je veux voir la mise en œuvre des répertoires. Si chaque répertoire est juste un fichier texte avec un certain contenu, il existe peut-être une solution simple pour voir le contenu de ce fichier texte.

Dans la bash à Linux, il n'est pas possible de faire un cat folder. La sortie est juste Is a directory.

Mise à jour La question Comment inspecter l'information sur la structure de répertoire d'un fichier UNIX/Linux? adresse le même problème, mais il a Aucune solution utile comme celle de MJTurner .

28
Neverland

L'outil pour afficher les détails de l'inode pour un système de fichiers sera spécifique au système de fichiers. Pour le ext2, ext3, ext4 Systèmes de fichiers (les systèmes de fichiers Linux les plus courants), vous pouvez utiliser debugfs, pour XFS xfs_db, pour zfs zdb. Pour btrfs Certaines informations sont disponibles à l'aide de la commande btrfs.

Par exemple, pour explorer un répertoire sur un ext4 Système de fichiers (dans ce cas / est dev/sda1):

# ls src
Animation.js    Map.js        MarkerCluster.js    ScriptsUtil.js
Directions.js   MapTypeId.js  markerclusterer.js  TravelMode.js
library.js      MapUtils.js   Polygon.js          UnitSystem.js
loadScripts.js  Marker.js     Polyline.js         Waypoint.js

# ls -lid src
664488 drwxrwxrwx 2 vagrant vagrant 4096 Jul 15 13:24 src

# debugfs /dev/sda1
debugfs: imap <664488>
Inode 664488 is part of block group 81
        located at block 2622042, offset 0x0700
debugfs: dump src src.out
debugfs: quit

# od -c src.out
0000000 250   #  \n  \0  \f  \0 001 002   .  \0  \0  \0 204 030  \n  \0
0000020  \f  \0 002 002   .   .  \0  \0 251   #  \n  \0 024  \0  \f 001
0000040   A   n   i   m   a   t   i   o   n   .   j   s 252   #  \n  \0
0000060 030  \0  \r 001   D   i   r   e   c   t   i   o   n   s   .   j
0000100   s  \0  \0  \0 253   #  \n  \0 024  \0  \n 001   l   i   b   r
0000120   a   r   y   .   j   s  \0  \0 254   #  \n  \0 030  \0 016 001
0000140   l   o   a   d   S   c   r   i   p   t   s   .   j   s  \0  \0
0000160 255   #  \n  \0 020  \0 006 001   M   a   p   .   j   s  \0  \0
0000200 256   #  \n  \0 024  \0  \f 001   M   a   p   T   y   p   e   I
0000220   d   .   j   s 257   #  \n  \0 024  \0  \v 001   M   a   p   U
0000240   t   i   l   s   .   j   s  \0 260   #  \n  \0 024  \0  \t 001
0000260   M   a   r   k   e   r   .   j   s  \0  \0  \0 261   #  \n  \0
0000300 030  \0 020 001   M   a   r   k   e   r   C   l   u   s   t   e
0000320   r   .   j   s 262   #  \n  \0 034  \0 022 001   m   a   r   k
0000340   e   r   c   l   u   s   t   e   r   e   r   .   j   s  \0  \0
0000360 263   #  \n  \0 024  \0  \n 001   P   o   l   y   g   o   n   .
0000400   j   s  \0  \0 264   #  \n  \0 024  \0  \v 001   P   o   l   y
0000420   l   i   n   e   .   j   s  \0 265   #  \n  \0 030  \0 016 001
0000440   S   c   r   i   p   t   s   U   t   i   l   .   j   s  \0  \0
0000460 266   #  \n  \0 030  \0  \r 001   T   r   a   v   e   l   M   o
0000500   d   e   .   j   s  \0  \0  \0 267   #  \n  \0 030  \0  \r 001
0000520   U   n   i   t   S   y   s   t   e   m   .   j   s  \0  \0  \0
0000540 270   #  \n  \0 240 016  \v 001   W   a   y   p   o   i   n   t
0000560   .   j   s  \0 305 031  \n  \0 214 016 022 001   .   U   n   i
0000600   t   S   y   s   t   e   m   .   j   s   .   s   w   p  \0  \0
0000620 312 031  \n  \0   p 016 022 001   .   U   n   i   t   S   y   s
0000640   t   e   m   .   j   s   .   s   w   x  \0  \0  \0  \0  \0  \0
0000660  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0

Dans ce qui précède, nous commençons par trouver l'inode du répertoire src (664488) puis jeter son contenu dans le fichier src.out puis afficher que l'utilisation de od. Comme vous pouvez le constater, le contenu de tous les fichiers de ce répertoire (Animation.js, etc.) sont visibles dans la décharge.

Ceci est juste un démarrage - voir la page debugfs manuel ou tapez help dans debugfs pour plus d'informations.

Si vous utilisez ext4, vous pouvez trouver plus d'informations sur la structure et la disposition des entrées de répertoires dans la documentation du noyau .

37
mjturner

Vous pouvez utiliser votre langage de programmation de choix, ouvrez le répertoire comme s'il s'agissait d'un fichier et de lire des octets de la poignée de fichier résultante. Cela ne va pas vous dire beaucoup, car cela ne sera que des ordures (avec quelques cordes reconnaissables) tant que vous ne savez pas comment cela est organisé. Comment il est organisé est à peu près une question de mise en œuvre pour le système de fichiers en question. Si vous voulez examiner ces choses en profondeur, je vous suggère de commencer par lire man dirent.h. Cela devrait être suffisant pour vous indiquer plus loin ce qui frappe votre fantaisie.

0
Calle Dybedahl

Vous pouvez essayer (la partition est un exemple).

Sudo debugfs /dev/xvda1                 

utilisez Dump pour écrire des données d'inode dans un fichier.

Sudo dumpe2fs /dev/xvda1

l'homme est votre ami, ceux-ci devraient vous donner des idées.

0
mckenzm