i-nodeに関連するメモ
i-nodeとは
ext2などのUnix系ファイルシステムで古くから使われているデータ構造である。inode にはファイル、ディレクトリなどのファイルシステム上のオブジェクトに関する基本情報が格納される。
ls -iでファイルやディレクトリのi-nodeを確認することが出来る。
1537577 %backup%~ 1537512 a.out 1537497 aiueo
stat aiueoでさらに詳細な内容が見れる
File: `aiueo'
Size: 5 Blocks: 8 IO Block: 4096 通常ファイル
Device: fc00h/64512d Inode: 1537497 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1003/ hogehoge) Gid: ( 1003/ hogehoge)
Access: 2010-01-26 12:35:07.000000000 +0900
Modify: 2009-07-27 15:43:00.000000000 +0900
Change: 2010-03-25 13:02:07.000000000 +0900
i-nodeによるハードリンクとシンボリックリンクの違い
ハードリンクは同じi-nodeのポインタを示しているだけ
シンボリックリンクは別のi-nodeが出来てしまう。
そのため、シンボリックリンクはbbb.txtを削除してもaaa.txtは消えない。
1. ls -lでハードリンクの数を確認できる。
-rw-r--r-- 1 hogehoge hogehoge 5 2009-07-27 15:43 aiueo
↑ ハードリンクの数
2.hogehoge@rose:~$ ln aiueo aiueo2
3.hogehoge@rose:~$ ls -l
-rw-r--r-- 2 hogehoge hogehoge 5 2009-07-27 15:43 aiueo
-rw-r--r-- 2 hogehoge hogehoge 5 2009-07-27 15:43 aiueo2
ハードリンクの数が2になった。
4.hogehoge@rose:~$ ls -i
1537497 aiueo 1537497 aiueo2
同じi-node
5. hogehoge@rose:~$ rm aiueo2
aiueo2だけ削除される
※ハードリンクはファイルにしか出来ない
※ハードリンクは同じパーティション内しかダメ
inodeを指定してファイルを削除
find . -inum 12345 -ok rm '{}' \;
-ok は確認用につけてあるだけ
inodeを元に12ブロック以下のファイルをダンプ
1.dfでパーティションのデバイスを取得 /dev/sda1とする
2.debugfs /dev/sda1
3.stat <i-node番号>
詳細を表示
4.正しければ、dump <i-node番号> /home/hogehoge/filename