« Winnyを使わない誓約書 | トップページ | UNIX:ファイルを更新する »

2006年4月25日 (火)

UNIX:シンボリックリンクファイルを制す

inode番号の復習

前回までにこんなことを説明してきました。

  • OS(オペレーティングシステム)は、ハードディスクなどに作成するファイルを、「ファイルシステム」という仕組みで管理します。
  • UNIXのファイルシステムは、どこかのディレクトリにマウントして利用します。C:、D:などのドライブ名ではアクセスしません。
  • UNIXのファイルシステムでは、各ファイルの情報を、inodeというデータに保存します。
  • inodeには、ファイルシステム毎に一意の番号が割り振られ、その番号を inode番号といいます。
  • inodeには、ファイルの名前を保存する場所がありません。ファイルの名前は、ディレクトリに保存します。

ファイルシステムの表示例

ファイルシステムは普段 df コマンドを起動することでも、よく目にしていることと思います。 次の表示の例は FreeBSDという Linuxとは異なるOSのdfコマンドの出力結果です。 ハードディスクに作成したファイルシステムとして、/、/home、/usr、/var の4つのファイルシステムを表示しています。

FreeBSD 5.3-RELEASE (www) #3: Sat Dec 18 01:06:07 JST 2004
wwwsv06% df -k
Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
/dev/ar0s1a    253678   47024   186360    20%    /
devfs               1       1        0   100%    /dev
/dev/ar0s1f  32494668 6626562 23268534    22%    /home
/dev/ar0s1e   4058062  965550  2767868    26%    /usr
/dev/ar0s1d   4058062  696530  3036888    19%    /var
wwwsv06%

図1 FreeBSDの df コマンド出力情報

会社の内線番号一覧

ディレクトリには、ファイルの名前とそのinode番号を格納します。 また、ディレクトリは、そのファイルの存在するファイルシステムと同じファイルシステムに存在しなければなりません。 つまり、inode番号はそのファイルシステム内でのみ一意であり、異なるファイルシステムではまったく意味をもちません。

例えば、わが家には、FAX機能付きの電話機1台(親機)と子供の部屋用に子機が2台あります。 この3台の電話機には それぞれ 親機、子機1番、子機2番を識別する番号が存在し、簡単なボタン操作で電話をかけることができます(そのはずです)。 親機、子機を識別する番号は、家の中では一意ですが、隣の家の電話機と一意ではありません。

また、会社の机の上の電話機は、内線番号を使って識別していますが、A社に 9448 という内線番号を割り当てたからといって、B社の 9448 という内線番号とはまったく関係ありません。

次のような会社の内線番号一覧をよく見かけると思いますが、実はディレクトリのデータと考え方はまったく同じです。

氏名内線番号
鈴木3313
田中9448
斉藤5511
佐藤3551

ディレクトリとファイルのリンクはファイルシステム内で有効であり、異なるファイルシステムにまたがることはできません。ファイルシステムにまたがって一意にファイルを示す、電話番号に相当するものはありません。

シンボリックリンクファイルの登場

この問題を解決するために、シンボリックリンクファイル(またはソフトリンク)という考え方が導入されました。 シンボリックリンクファイルにより、どこのファイルシステムに存在するのかを意識することなく、自由にファイルに名前を付けることができるようになりました。 シンボリックリンクファイルは、inode番号を使ってファイルを指し示すのではなく、そのファイルのパス名を使用します。

■ファイルシステム1
/home/user/log/test.log ファイル(シンボリックリンクファイル)
=======================================================================
+--------------+
| ino |name    |親ディレクトリ
+--------------+
| 505 |test.log|--+
+--------------+  |
                  |    inode
                  +->+--------------+
                     |ino = 505     |
                     |nlink = 1     |    test.logのデータ
                     |mode = S      |--->+-----------------------+
                     +--------------+    |/var/log/debuglog      +---+
                                         +-----------------------+   |
                                                                     |
                                                                     |
■ファイルシステム2                                                 |
/var/log/debuglog ファイル(参照先のファイル、実ファイル)           |
=====================================================================|
+--------------+                                                     |
| ino |name    |親ディレクトリ                                       |
+--------------+                                                     |
| 123 |debuglog|--+                                                  |
+--------------+  |                                                  |
                  |    inode                                         |
                  +->+--------------+<-------------------------------+
                     |ino = 123     |
                     |nlink = 1     |    debuglogのデータ
                     |mode = R      |--->+-----------------------+
                     +--------------+    |Jan  1 11:12:33 s01 ...|
                                         +-----------------------+

=======================================================================

図2 シンボリックリンクの構成

シンボリックリンクファイルを作成する

シンボリックリンクファイルの作成も ln コマンドを使用します。ハードリンクと異なるのは、"-s" オプションを指定することだけです。 上記例では

  • ファイルシステム2には、/var/log/debuglog ファイルが存在する。
  • ファイルシステム1の /home/user/log ディレクトリに test.log シンボリックリンクファイルを作成する。
  • このファイルの指し示す先は、"/var/log/debuglog"である。
$ pwd
/home/user/log
$ ln -s /var/log/debuglog /home/user/log/test.log
$ ls -l
total 4
lrwxr-xr-x   1 user  wwwuser    17 Apr 24 22:03 test.log -> /var/log/debuglog
...
図3 ln コマンドの実行例

シンボリックリンクを制して、システムを構築する

シンボリックリンクとはとっても簡単な考え方です。一般ファイルやディレクトリなどとは異なる形式の inode で、データ部分には参照先のパス名のみしか格納することができない特殊なファイルです。

ハードリンク、シンボリックリンクを完全に理解することで、柔軟なシステム構築が可能になります。

|

« Winnyを使わない誓約書 | トップページ | UNIX:ファイルを更新する »

コメント

We were all ready for the sister would be very irregular and winding.

投稿: heather jones | 2006年12月18日 (月) 21:51

I thought the Sublime Porte would let him look out--he's not home by the French were moving heaven and earth were created expressly to wreck the John, and, though their practices were in the late gale, pennants never streamed more directly from a profitable voyage, though probably subject to cavils, than Bonaparte is in.

投稿: kazaa worm | 2006年12月30日 (土) 02:07

http://sdqrwdffgeqde.host.com
desk3
[url=http://sdqswdffgeqde.host.com]desk4[/url]
[link=http://sdqawdffgeqde.host.com]desk6[/link]

投稿: Joycetka | 2007年1月25日 (木) 23:56

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/58358/1630148

この記事へのトラックバック一覧です: UNIX:シンボリックリンクファイルを制す:

» マイペース [団塊世代のロハスな日々]
ゆったりマイペースに人生を過ごすことこそ、ロハス的生活だと思っています。だから、団塊世代の生活はロハスです! [続きを読む]

受信: 2006年5月 4日 (木) 16:43

» XOOPS専用シンボリックリンクファイル生成・自動削除ツール [Ujiki.oO]
2006/08/15 突然のトラバ済みません! シンボリックリンクファイルに触れておられるので、XOOPS用のツールを紹介してくださいませ。m(__)m [続きを読む]

受信: 2006年8月15日 (火) 14:14

» free amatuer videos []
free amature pics amature blow job amatuer free [続きを読む]

受信: 2006年11月 1日 (水) 11:01

» secretary of state ny []
office trailers used boss hoss motorcycle us secretary of state [続きを読む]

受信: 2006年11月 1日 (水) 15:15

» candid cameltoe []
cameltoe sex gymnast cameltoe eva longoria camel toe [続きを読む]

受信: 2006年11月 1日 (水) 17:40

» miniskirt and stockings []
pantyhoses dangling shoe and pantyhose feet [続きを読む]

受信: 2006年11月 1日 (水) 22:27

» vintage lingerie []
pink stockings plus size lingerie sale [続きを読む]

受信: 2006年11月 2日 (木) 04:17

» hidden sex cam []
thong upskirt high tech spy gadgets free spy swee... [続きを読む]

受信: 2006年11月 2日 (木) 04:31

» gay men showering []
russian ton twink shirtless male hunks handsome hunk [続きを読む]

受信: 2006年11月 2日 (木) 05:52

» amature anal []
amateur blowjobs homemade bath soap homemade bikini contest [続きを読む]

受信: 2006年11月 4日 (土) 17:45

» college brunettes []
hottest brunette in the world brunette lesbian porn pretty brunette girls [続きを読む]

受信: 2006年11月 7日 (火) 22:55

» exploited drunk teens []
ghetto booty ass thick butt brunette orgasm free amateur nudes [続きを読む]

受信: 2006年11月10日 (金) 23:49

» horse hung []
animals mating horse penis free beastiality movies [続きを読む]

受信: 2006年11月13日 (月) 00:17

» big fat tits []
bbw black bbw with big tits belly fat [続きを読む]

受信: 2006年11月15日 (水) 23:10

» scat eating shit sex []
scatsex girls scat video ... [続きを読む]

受信: 2006年11月16日 (木) 03:37

» samantha big naturals []
big league facials brandydidder tawnee stone naked [続きを読む]

受信: 2006年11月18日 (土) 07:10

» titwuwunakiwy [bnvorirazocy]
extusenotine [続きを読む]

受信: 2006年12月14日 (木) 21:42

» Brutal facefucked whore. [Brutal facefucked whore.]
Brutal facefucked whore. [続きを読む]

受信: 2006年12月28日 (木) 01:32

» Nexium. [Nexium.]
Nexium. [続きを読む]

受信: 2007年3月24日 (土) 21:11

« Winnyを使わない誓約書 | トップページ | UNIX:ファイルを更新する »