Linux ファイルシステム 階層とディレクトリを理解しよう(Linux初心者向け)

Linux

Windowsの代わりにLinuxを使い始めたけど、 ファイルシステム の違いに戸惑っている。
通常の操作はGUIなので、Windowsとの違いが少ないが、 ファイルシステム はよくわからない。
自分が正しくLinuxを操作しているのか自信がない。
ファイルシステム 、ディレクトリについて、Windowsとの対比を知りたい。

この記事では・・・

この記事では、Linuxを使い始めた方向けに、ファイルシステム、ディレクトリ構造について分かりやすく解説します。
Linuxのディレクトリ構造は、Windowsとはかなり異なるので、使い始めのときは戸惑うことも多く、あいまいなままという方もいると思います。
ですが、あなたがLinuxをより深く活用しようとした時に、ファイルシステム、ディレクトリ構造が理解できていないと、多くのトラブルや壁にぶつかってしまうことになります。
少なくとも全体のイメージ、大まかな構造については理解しておくべきでしょう。

Linuxの ファイルシステム とデイレクトリ構造について

Linuxのディレクトリ構造は、Windowsのそれとはかなり異なるものです。
Windowsでは、ほとんどのプログラムが「Program Files」という名前のディレクトリに保存されており、システムファイルは「system32」にあります。

それに対してLinuxでは、ファイル階層は「ファイルシステム階層標準(FHS)」にもとづいて構成されています。
この「ファイルシステム階層標準(FHS)」は、LinuxFoundationによって維持されており、すべてのUNIXベースのシステムのディレクトリの構造と内容を定義するものです。
これにより、ほとんどのLinuxディストリビューションは、同じディレクトリ構造をもっています。

Linuxのディレクトリ構造

Linuxのファイル階層

Linuxのディレクトリ構造は、ツリー構造になっています。

ツリーの始まりの部分はルートと呼ばれます。
表記はroot、ファイルシステムのメイン(コア)ディレクトリです。

Linuxで扱われるすべてのファイルとディレクトリは、ルートディレクトリ、またはルートディレクトリの下に表示されます。

ルートディレクトリは、次のように表されます。
rootが表記だと書きましたが、実際の運用では/一つでrootであることを表します。

/

たとえば、homeというディレクトリがあり、その中にlogというディレクトリがあるとします。
この場合、ツリー構造はルートから始まり、次のようになります。

root ⇒ home ⇒ log

Linux上では、homeディレクトリ内のlogディレクトリは次のように示されます。

/ home / log

最初の/はルートを表し、その下の階層に home があり、homeの下に log があります。
Linuxでは、デイレクトリの階層ごとに / で区切って表記します。

Linuxの一般的なディレクトリについて

Linuxの一般的なディレクトリと、その内容について簡単に説明していきます。

/ lib  システムライブラリファイル

システムの起動に関わるファイルと、特定のコマンドを実行するために必要なライブラリが保存されています。ライブラリは単なるコードであるか、実行可能なバイナリデータです。

/binおよび/sbinフォルダー内のコマンドの実行時に必要とされるライブラリーは、この/libディレクトリーに保管されます。

ユーザーが「/lib」ディレクトリを操作することはほとんどないでしょう。

/ bin   ユーザーバイナリファイル

/ binはバイナリの略で、ビンと呼ばれます。
OSが稼働するために必要な実行ファイルが格納されています。
つまり、ls、cp、cd、cat、chmod、chown、date、echo、kill、ln、mkdir、etxなどの基本コマンドが保存されたディレクトリということです。

人間が書くプログラムは、様々な言語の形をとっており、それは人間が読めるコードで書かれています。
パソコンは、0101のようなバイナリ形式のプログラムのみを読み取ることができます。
そこで、プログラム言語もしくはコマンドは、バイナリ形式に変換・コンパイルする必要があります。

binディレクトリには、基本コマンドのバイナリがあり、コマンドを実行する役割を負っています。

/ dev   デバイスファイル

/devディレクトリは、デバイスに関連するファイルなど、特定のファイルのみが保存されます。

コンピューターに接続されたデバイス(マウスやキーボード、外付けドライブ等)のスペシャルファイルが置かれるディレクトリです。
スペシャルファイルとは、デバイスファイルとも呼ばれ、ファイルシステム上で通常のファイルのように指定される、デバイスドライバのインターフェースのことです。
スペシャルファイルを使用することで、デバイスを使用することができるようになります。

これらは、ハードドライブに存在しない仮想ファイルで、主に起動時に生成されます。
たとえば、外部ドライブなどの新しいデバイスを接続すると、新しいデバイスエントリがここのdevに保存されます。

また/devには、nullデバイスと呼ばれる、/dev/nullという名前のディレクトリが存在します。
これは、カーネルが仮想的に用意しているもので、実体がありません。

/ etc   すべての構成関連ファイル

/etcディレクトリは、Linuxシステムで最も重要なディレクトリの1つです。

Linux設定のための、パスワードファイルやネットワークファイルなど、主に管理者とサービスによって使用される、システムの構成ファイルである.confファイルがすべて保存されます。

/ home   ユーザーのホームディレクトリ

各ユーザーの個人用ファイルなどがあるディレクトリになります。
すべての個人ファイル、メモ、アプリケーション、およびすべてがユーザーとしてホームディレクトリに保存されます。

Linuxでは、ユーザー領域を作成するときにはホームディレクトリを作るのが一般的ですが、独自にホームディレクトリなしでユーザー領域を作成することもできます。

また、例えば一つのLinuxシステム上に、aaaとbbbという名前の2つのユーザーがあるときには、FHSに従い、 / home/aaaと/home/bbbの2つのディレクトリが/home上に作成されます。

ユーザーは、自分のディレクトリにのみアクセスすることができます。

従って、aaaは自分のホーム/ home / aaaにのみアクセスでき、 / home / bbbにはアクセスできません。

/ root   ルートホームディレクトリ

システム管理者である「rootアカウント」のホームディレクトリです。

同じrootを名乗っても、先に紹介した「/」ディレクトリとは別です。
rootディレクトリは全てのディレクトリの大元を表すのに対し、/rootは「rootアカウント」のホームディレクトリを表します。

rootアカウントは、常にLinuxシステムに存在するため、独自のホームディレクトリがなくてはなりません。
そのためrootアカウントは / home / root ではなく、 / root の位置に置かれます。

/ opt   オプションのアプリケーション

Linuxディストリビューションのリポジトリからは利用できない、サードパーティのアプリをインストールするために使われるディレクトリです。

サードパーティー製のアプリケーションと、それに関連するすべてのファイルがここに保存されます。

有名なサードパーティー製アプリとしては、Chromeブラウザなどがあります。

/ sbin   システムバイナリファイル

/ sbinには、システムのプログラムファイルが保存されます。

/binディレクトリと類似していますが、/sbinにはルートユーザーのみが実行できるプログラムが置かれます。
例えば、ifconfigやhaltのようなシステム管理者用のコマンドが主に保存されています。

/ tmp   一時ファイル

一時ファイルが保存されるディレクトリです。

このディレクトリはOS、プログラム、ユーザーなどシステムを使用する全てのユーザーが共同で使用します。

/ tmpデイレクトリの内容は、システムを再起動すると消去されます。

/ usr   ユーザープログラム

ユーザーアプリケーションが保存されるデイレクトリです。
このディレクトリの下に、たくさんのサブディレクトリが連なります。

ほとんどのシステムプログラム、ライブラリ、およびソースコードが /usr の下に配置されます。
サブディレクトリの一例として、基本的なユーザーコマンドが格納されている /usr/ bin や、管理者用の追加のコマンドがある / usr /sbin 、システムライブラリが保存された /usr/lib などがあげられます。

/ var   変数ファイル

varは変数を意味し、可変データファイルはここに保存されます。
/ tmp と同じように、一時ファイルを保存しておくディレクトリですが、OSを再起動してもファイルは削除されません。

このディレクトリには、さまざまな「変化するデータファイル」が保存されます。
代表的な保存データとしては、システムログ、ユーザートラッキングデータ、キャッシュファイル、プリンタのスプールファイルなどがあります。

システム管理者がシステムの動作に関する情報を探すのに最適な領域です。

/ boot   ブートローダーファイル

コンピュータの起動に使用されるファイルが保存されます。

Linuxカーネルとブートイメージファイル、およびブートローダーであるLILOとGrubはこのディレクトリにあります。

起動時にBIOSの制限を受けないように、通常、このディレクトリはディスクの最初のパーティションに配置されます。

/ proc   プロセス関連情報

Linuxカーネルの内部情報を取得するための、仮想的なディレクトリです。

現在実行中のプロセスと、カーネルの各パラメータの情報が/procディレクトリにあります。
システムモニターのようなツールは、このディレクトリの内容を参照しシステム情報を取得します。

例えば、

# view /proc/cpuinfo

とコマンドを実行することで、CPU情報を得ることができます。

/ media   リムーバブルデバイス

このディレクトリは、リムーバブルメディアのマウントポイントとして、OSが自動でマウントするポイントとして使用されます。

USBディスク、SDカード、DVDなどのリムーバブルメディアデバイスを接続すると、/ mediaディレクトリの下に個別のディレクトリが自動的に作成されます。
この個別ディレクトリにアクセスすることで、メディアを開くことができます。

/ mnt  マウントディレクトリ

/ mntディレクトリとそのサブディレクトリは、ストレージデバイスの一時的なマウントポイントとして使用されます。

一見、/mediaと同じに見えますが、mediaディレクトリはリムーバブルメディアをOSが自動的するのに対して、/mntはユーザーが手動でマウントする際に使用するディレクトリです。

/ srv  サービスデータ

/ srvディレクトリには、システムサービスのデータが格納されます。

具体的には、FTP、WWW、CVSなど、特定のサービスのデータファイルが保管される場所になります。

/ sys   仮想ファイルシステム

/sysディレクトリには、Linuxカーネルに関する情報が保存されます。

カーネルの情報と構造属性など、システム全般の情報を確認できます。

/sysは、実際のファイルシステムではなく、仮想ファイルシステムです。

まとめ

Linuxのディレクトリや、ファイルシステムの階層についてある程度理解できたでしょうか。
Windowsであれば「Document and Setting」のようにある程度分かりやすい名前がついていますが、Linuxでは略語がディレクトリ名になっており、またユーザーから見るとその機能が一部重複するように見えるところもあるためやや分かりにくいと感じます。
Linuxについて、より深い知識を得るには、ネットの情報だけでなく、体系的に学ぶのが一番の早道です。

ですが、オンラインスクールのようなところは費用や時間など、制約が多いのも確かです。
そんな中で、僕がおすすめしたいのは「Udemy」です。
Udemyは、様々なレベルの講座が、低料金で提供されており、あなたの好みに合う講座をチョイスして、受講することができます。
受講料金も安いもので数百円から、数千円程度とリーズナブルなので、ちょっとお試しで受講するにもハードルが低いです。

僕も、Linuxの理解を深めるために、いくつかの講座を受講しましたが、とてもわかりやすく短期間に知識を得られました。

Udemyの講座は、厳しい競争原理にさらされており、より分かりやすく、より内容の濃いものしか生き残ることができないようになっています。

Udemyの利用方法は簡単ですので、のぞいてみてはいかがでしょうか。

 

関連記事:
Adobe After Effects にかわるLinux用オープンソースアプリケーション
(40代以上のPC弱者必見) PCHack のパソコン講座で即戦力として仕事に役立つスキルを
動画編集スキルを学べる オンラインスクール を徹底比較【副業のはじめの一歩】

コメント