Простой способ увидеть содержимое каталогов в файловых системах Linux / UNIX

Я сделал это, отправил слишком скоро, это кажется!

Я должен был позволить Xinerama (в приложении настроек Nvidia) иметь два дисплея, сотрудничают.

Прежде чем у меня были свои значки на рабочем столе на обоих экранах, таким образом, я должен был предположить, что они не работали одним непрерывным рабочим столом их. Теперь они находятся только на левом экране.

28
13.04.2017, 15:36
3 ответа

Инструмент для отображения деталей inode для файловой системы будет зависеть от файловой системы. Для файловых систем ext2 , ext3 , ext4 (наиболее распространенные файловые системы Linux) вы можете использовать debugfs , для XFS xfs_db , для ZFS zdb . Для btrfs некоторая информация доступна с помощью команды btrfs .

Например, чтобы исследовать каталог в файловой системе ext4 (в данном случае / это 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

В приведенном выше примере мы начинаем с поиска inode каталога src ( 664488 ), а затем выгружаем его содержимое в файл src.out , а затем отображаем его, используя od . Как видите, содержимое всех файлов в этом каталоге ( Animation.js и т. Д.) Видно в дампе.

Это только начало - см. Страницу руководства debugfs или введите help в debugfs для получения дополнительной информации.

Если вы используете ext4 , вы можете найти дополнительную информацию о структуре и структуре записей каталогов в документации ядра .

36
27.01.2020, 19:39

Вы можете использовать язык программирования по своему выбору, открыть каталог, как если бы это был файл, и прочитать байты из полученного дескриптора файла. Однако это мало что вам скажет, поскольку это будет просто мусор (с несколькими узнаваемыми строками в нем), если вы не знаете, как он организован. То, как это организовано, в значительной степени является проблемой реализации рассматриваемой файловой системы. Если вы хотите глубже изучить эти вещи, я предлагаю вам начать с чтения man dirent.h . Этого должно быть достаточно, чтобы направить вас дальше к тому, что поражает ваше воображение.

0
27.01.2020, 19:39

Предположим, что все данные находятся в файле с именем file, затем

     awk -F "=" '{print $1"("$2")="$2}' file
-121--117411-

Вообще говоря, при выполнении рекурсивного разделения между двумя каталогами для каждого файла diff включает команду diff, показывающую, что он делает для каждого файла. Например:

$ diff -ru a b
diff -ru a/file b/file
--- a/file  2015-07-17 01:06:14.078875805 -0700
+++ b/file  2015-07-17 01:06:21.969077076 -0700
@@ -1 +1 @@
-hello
+goodbye

Git хочет производить исправления в одном формате, поэтому каждому файлу должна предшествовать строка, начинающаяся с « diff ».... Но поскольку git использует собственную внутреннюю реализацию diff, чтобы дать понять людям, считывающим выходные данные, на что они смотрят, git добавляет воображаемый флаг --git .

В действительности, если вы хотите использовать git для разделения двух файлов или каталогов в файловой системе, вы можете запустить

git diff --no-index a b

(флаг -no-index указывает на игнорирование любого репозитория git, в котором вы находитесь. Этот параметр может быть опущен, если вы не находитесь в репозитории git.) Git выдает выходные данные в формате «unidiff». При необходимости аппроксимации с помощью системной команды diff можно использовать diff -ru a b . (Флаг -u выбирает формат unidiff, в то время как -r рекурсирует в каталоги.)

-121--58438-

Можно попробовать (раздел является примером).

sudo debugfs /dev/xvda1                 

использовать дамп для записи данных inode в файл.

sudo dumpe2fs /dev/xvda1

человек - ваш друг, они должны дать вам некоторые идеи.

0
27.01.2020, 19:39

Теги

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