前回はWindowsと比較しながらパーティションの話でしたので今回はディレクトリ構成についてまとめましょう。
Windowsの場合はドライブ名=パーティション名となっていてその下の階層に次々とディレクトリが作成されています。
代表的なものでプログラムやアプリケーション関連はc:\program filesに配置されていますしシステムフォルダはc:\Windows(XPの場合。他はバージョンによって様々・・・)となっています。
つまりパーティション名(=ドライブ名)もパスの一部となります。
対するLinuxの場合、全てのパーティションに対して最上位は/(ルートディレクトリ)となります。
この配下に諸々のディレクトリが作成されているという形になり、特定のディレクトリを別パーティションに分けて記録することもできますが全てにおける起点は/となります。パスにパーティションは関係ありません。
それでは実際のディレクトリを見ていきましょう。
・/bin
システム管理者、一般ユーザ共に使用する基本的なコマンドが格納されています。
ネットワーク共有やROMへの格納などを想定して必要なものを入れているため、後々新たなコマンドを追加するのは避けたほうがよいとされています。(じゃあどこに入れるねん!?という話は後ほど。)
・/boot
ブート時に使用する大切なファイルが格納されています。Linux全般の流れとしては/に起動ファイルをおくこともあり、Debian系では/bootにファイル自体を置きながら/直下にシンボリックリンクを張るという手法をとっているようです。
・/dev
デバイスに関するファイルが置かれています。デバイスとは大雑把に言うなら装置を表す単語で、例えばモニタやキーボードなどのハードウェアだと理解してもらえたらよいと思います。
下手をすると動かなくなる事も考えられますので、プロのエンジニアでもない限り基本触ることはないでしょう。
・/etc
各種設定ファイルが格納されているディレクトリです。
/etc/apache2/のようにサブディレクトリを作成してより細かい設定を行うこともあります。
今後各種設定について書いていきますので、かなりの頻度で登場するディレクトリになります。
ここはホスト(マシン)固有の値を入れる場所なので、外部との共有はしないこと!
・/home
各ユーザのホームディレクトリとなる場所です。
例えばWebサーバを通じて外部に公開する場合、/home以下に/public_html/とでも名前を付けたディレクトリを作成して公開する設定にする事があります。
後ほどWebサーバやメールサーバを作成するときなどにも構うかと思いますのでその時にまた登場するかと思います。
※そういえばユーザの追加前に作成した/etc/skel/のディレクトリはadduser実行時に自動的に/home/以下にコピーされる、というお話をしましたね。
・/lib
シェアドライブラリを格納するディレクトリ。
シェアド(Shared)は共有されたというような意味、ライブラリ(Library)は特定の機能をもつプログラムを部品化して外部から呼び出せるようにしたものであり、Windowsで言えば拡張子が.dllのダイナミックリンクライブラリなどが入った場所だと思ってもらえたらよいかと思います。
もっともWindowsの場合はシステムフォルダ内に格納されていますが。。。
・/lost + found
fsckというコマンドでディスクチェックを実行したときに破損ファイルの断片から作成されるファイルが格納される場所。自分の様なレベルでは到底使うことのないディレクトリであり、こんな領域に頼る前にマメにバックアップを取るようにしたほうが良いと思われます。
・/mnt
一時的なファイルシステム(フロッピー・・・はさすがに使用頻度が少なくなってきましたがCD-ROMだったりメモリーカードだったり)をマウントして読み書きする際に使用するディレクトリ。
スマートフォンをお使いの方、どこかで見たことないですか??
ご存知の方も多いでしょうがAndroidはLinuxをベースに構築されたモバイル用OSであり、中身のディレクトリ構成も結構似てるんです。
なのでファイルマネージャなんかでSDカードを参照するときに/mnt/sdcardsという名前で表示されているので、機会があったらご覧ください。
・/opt
RPMやdpkgといったディストリビューションに付属しているパッケージ管理システムを使用してソフトをインストールするときに使用するディレクトリになります。
様々なサブディレクトリがありますが、ひとまず使用する予定はないのでいずれ改めて。。。
・/proc
カーネル内部の情報にアクセスするために必要なファイルが入っています。起動プロセスなどを学習しようと思ったら見かけることもあるでしょう。
・/root
スーパーユーザであるroot専用のホームディレクトリです。
/homeとあえて切り離すことで一般ユーザの誤操作などに起因する/homeそのものの破損時でもrootで作業できるように設計された結果だそうです。
・/sbin
ブートやシステムのリカバリで使用するようなシステム標準コマンドを格納しています。
/binとの大きな違いは主にrootが使用するような重要なシステムメンテナンスコマンドを含んでいることであり、その役割から/bin以上にコマンドなど追加するべきではありません。
・/tmp
一時的な作業用ディレクトリです。
Windowsでもtempというディレクトリを作ったりしますがこちらはリブート・シャットダウン時にデータが一掃されるという特徴があるため、持続性が必要なファイルは置かないほうがよいでしょう。
・/usr
ユーザ向けのディレクトリで、下の階層にbinやsbin、localなどというサブディレクトリを持ちます。
/usr/binはシングルユーザモードでは必要としないコマンドを、/usr/sbin/は/sbin/ほど重要ではないシステム系コマンドを、/usr/local/以下にユーザが自分で入れるコマンドを格納する形となります。
上の/binで自分がコマンドを入れる~という場面に遭遇した場合は/usr/local/binにインストールすることが多いですね。
・/var
ここもtmpと同様作業ディレクトリなのですがtmpと異なるのはリブート時もデータを保持してくれることです。
印刷スプールやメールスプール、キャッシュからログファイルといった変化するファイル(Variable)を置く場所、という意味のようです。
このように様々なディレクトリが存在しますし、ここに書いていないものも沢山あるのですが・・・いきなり全部覚えろ!と言われても自分のような中年のオッサンの頭には入りきらないもので、ぼちぼち覚えていくことにします。
また、ディストリビューションによっては存在しないディレクトリもある様ですので、自分のOSについてはフォーラムや公式ページを参照の上把握していただければと思います。