Linux/UNIX 파일 시스템에서 디렉토리의 내용을 보는 쉬운 방법

Linux/UNIX 파일 시스템에서 디렉토리의 내용을 보는 쉬운 방법

과거에 저는 Linux/UNIX 파일 시스템에서 디렉터리는 디렉터리 내 파일의 파일 이름과 inode 번호를 포함하는 파일일 뿐이라는 것을 배웠습니다.

간단한 방법이 있나요바라보다디렉토리의 내용? 내 말은 파일 이름과 inode가 저장/구성되는 방식입니다.

그래요아니요ls, find또는 이와 유사한 것을 찾으십시오 . 또한 디렉토리에 있는 파일의 내용을 보고 싶지 않습니다. 디렉토리 구현을 보고 싶습니다. 각 디렉터리가 일부 콘텐츠가 포함된 텍스트 파일인 경우 해당 텍스트 파일의 콘텐츠를 쉽게 볼 수 있는 방법이 있을 수 있습니다.

Linux의 bash에서는 실행할 수 없습니다 cat folder.Is a directory

고쳐 쓰다질문unix/linux 파일의 디렉토리 구조 정보를 보는 방법은 무엇입니까?동일한 문제를 해결했지만 다음 솔루션만큼 유용한 솔루션은 없었습니다.미트너.

답변1

파일 시스템 inode 세부 정보를 표시하는 도구는 파일 시스템마다 다릅니다. ext2파일 ext3시스템 ext4(가장 일반적인 Linux 파일 시스템) 의 경우 debugfsXFS를 나타내고 xfs_dbZFS를 나타내는 를 사용할 수 있습니다 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

위에서는 먼저 디렉터리 src( 664488)의 inode를 찾은 다음 그 내용을 파일에 덤프한 다음 src.out을 사용합니다 od. 보시다시피 Animation.js디렉터리에 있는 모든 파일의 내용( 등)이 덤프에 표시됩니다.

이것은 단지 시작일 뿐입니다. 자세한 내용은 debugfs매뉴얼 페이지를 참조하거나 help직접 입력해 보세요 .debugfs

을 사용하는 경우 ext4다음에서 디렉토리 항목의 구조 및 레이아웃에 대한 자세한 정보를 찾을 수 있습니다.커널 문서.

답변2

원하는 프로그래밍 언어를 사용하고, 파일처럼 디렉터리를 열고, 결과 파일 핸들에서 바이트를 읽을 수 있습니다. 하지만 그것이 어떻게 구성되어 있는지 모르는 한 그것은 단지 쓰레기일 뿐이기 때문에 많은 것을 말해주지는 않습니다(인식 가능한 문자열이 포함되어 있음). 구성 방법은 주로 관련 파일 시스템 구현의 문제입니다. 이에 대해 더 자세히 알아보고 싶다면 을 읽어보는 것부터 시작하는 것이 좋습니다 man dirent.h. 이 정도면 당신이 좋아하는 것이 무엇인지 자세히 살펴볼 수 있을 것입니다.

답변3

시도해 볼 수 있습니다(파티셔닝이 예시입니다).

sudo debugfs /dev/xvda1                 

덤프를 사용하여 inode 데이터를 파일에 씁니다.

sudo dumpe2fs /dev/xvda1

남자들은 당신의 친구이고 이것들은 당신에게 몇 가지 아이디어를 줄 것입니다.

관련 정보