その時々

その時々で違うんです。特に決まっていないんです。

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