Linux / ディレクトリ構造と主要ディレクトリの用途
Linuxの主要な保存先は、設定が/etc、変化するデータが/var、プログラムが/usr、一般ユーザーのホームが主に/homeです。実際の配置にはディストリビューションや管理者の設定による違いがあります。
初めてLinuxに触れると、/etc、/var、/usr、/procの用途を混同しがちです。役割を理解してから、対象システムの実際のパスを確認すると管理しやすくなります。 関連する条件と手順は、現在の場所を確認して移動する - pwd、ls、cd、treeを参照できます。
この記事では、Linuxの主要ディレクトリごとの用途と、ディレクトリ名が略語である場合の意味を整理します。 関連する条件と手順は、ファイルシステムの理解 - 絶対・相対パスと主要ディレクトリを参照できます。
Linux主要ディレクトリを一目で見る
| ディレクトリ | 名前の意味 | 主な用途 |
|---|---|---|
| / | Root | Linuxファイルシステムの最上位ディレクトリ |
| /bin | Binary | 基本コマンド実行ファイル |
| /boot | Boot | カーネルやブートローダーなどの起動関連ファイル |
| /dev | Device | ディスク、ターミナルなどのデバイスファイル |
| /etc | 伝統的に et cetera に由来 | システムとサービスの設定ファイル |
| /home | Home | 一般ユーザーのホームディレクトリ |
| /lib | Library | 共有ライブラリ |
| /lib64 | 64-bit Library | 64ビットシステム用共有ライブラリ |
| /media | Media | USB、CD/DVD などのリムーバブルデバイスのマウント |
| /mnt | Mount | ファイルシステムを一時的にマウントする場所 |
| /opt | Optional | 追加アプリケーション |
| /proc | Process | プロセスとカーネル情報を提供する仮想ファイルシステム |
| /root | Root | rootユーザーのホームディレクトリ |
| /run | Run | 起動後に作成されるランタイムデータ |
| /sbin | System Binary | システム管理用コマンド |
| /srv | Service | サーバーが提供するサービスデータ |
| /sys | System | デバイスとカーネル情報を提供する仮想ファイルシステム |
| /tmp | Temporary | 一時ファイル保存 |
| /usr | システム資源(Unix System Resourcesという説明もある) | プログラム、コマンド、ライブラリ、共有データ |
| /var | Variable | ログ、キャッシュなど、常に変化するデータ |
/ - ルートディレクトリ
/はLinuxファイルシステムの最上位にあるトップディレクトリです。
Windowsのドライブ概念とは異なり、Linuxではすべてのディレクトリとファイルが/の下に接続されます。
/
├── bin
├── boot
├── dev
├── etc
├── home
├── usr
└── var
/をルートディレクトリと呼び、rootユーザーアカウントのホームディレクトリである/rootとは異なる概念です。
/bin - 基本コマンド
binはBinaryの略です。
システムを使用するために必要な基本コマンドの実行ファイルが保存されます。代表的にはls、cp、mv、catなどのコマンドがあります。
ls /bin
最近の多くのLinuxディストリビューションでは、/binは実際のディレクトリではなく、/usr/binを指すシンボリックリンクで構成されます。
ls -ld /bin
/boot - 起動関連のファイル
/bootには、Linuxシステムを起動するために必要なカーネルおよびブートローダー関連のファイルが保存されます。
以下は配置例です。initramfsの名前やGRUBのディレクトリは配布物によって異なり、設定ファイルを確認せず直接書き換えないでください。
/boot/vmlinuz-...
/boot/initramfs-...
/boot/grub2/
カーネルの更新やGRUBブートローダーの設定を変更する際によく確認するディレクトリです。
/dev - デバイスファイル
devはDeviceの略です。
Linuxではハードディスク、SSD、ターミナルなどのデバイスをファイル形式で表現します。
/dev/sda
/dev/sdb
/dev/nvme0n1
/dev/tty
/dev/null
例えば/dev/sdaはディスクデバイスを表すことができ、/dev/nullは入力されたデータを破棄する特殊なデバイスファイルです。
/etc - システム設定ファイル
/etcはLinuxサーバーを管理する際に最もよく使われるディレクトリの一つです。
主にオペレーティングシステムや各種サービスの設定ファイルが保存されます。
/etc/passwd
/etc/fstab
/etc/hosts
/etc/ssh/sshd_config
SSH、Apache、Nginx、ネットワーク、ユーザーアカウントなど、さまざまな設定を変更する際には、/etc以下のファイルを修正します。
/home - 一般ユーザーのホームディレクトリ
/homeは一般ユーザーの個人ファイルと設定を保存するディレクトリです。
例えばjohnというユーザーを作成すると、通常次のようなホームディレクトリが作成されます。
/home/john
ユーザーがログインすると、デフォルトの作業場所も自分のホームディレクトリになります。
/lib、/lib64 - 共有ライブラリ
libはLibraryの略です。
Linuxの基本的なプログラムやコマンドを実行するために必要な共有ライブラリが保存されます。
64ビットシステムでは/lib64を使う構成がありますが、すべてのアーキテクチャや配布物に必須ではありません。/lib以下へアーキテクチャ別に配置する構成もあります。
最近のLinuxディストリビューションでは、/lib、/lib64がそれぞれ/usr/lib、/usr/lib64などを指すシンボリックリンクである場合が多いです。
/media - リムーバブルデバイスマウント
/mediaは、USBメモリ、CD、DVDなどのリムーバブルストレージデバイスをマウントするときに使用する場所です。
デスクトップLinuxでは、USBデバイスを接続すると/mediaまたは/run/mediaの下に自動的にマウントされることが多いです。
/mnt - 一時的マウント
mntはMountに由来する名前です。
管理者がディスクやネットワークファイルシステムを一時的にマウントするときに使います。以下は例示であり、/dev/sdb1が接続済みの目的のファイルシステムかをlsblk -fで確認し、findmnt /mntで既存マウントがなく、マウント先が空であることを先に確認してください。実在しない例のデバイス名をそのまま実行しないでください。
sudo mount -o ro /dev/sdb1 /mnt
この例はsudoで読み取り専用マウントを要求します。終了後は、そのマウントだけをsudo umount /mntで外します。ファイルシステムによっては読み取り専用指定でもジャーナル回復などが行われ得るため、原本を一切変更できない調査では別の保全手順が必要です。/mediaはリムーバブルメディア用、/mntは一時マウント用という役割の違いを覚えてください。
/opt - 追加インストールプログラム
optはOptionalの意味を持ちます。
Linuxディストリビューションの基本パッケージ構造とは別にインストールされる商用プログラムやサードパーティアプリケーションが主に配置されます。
/opt/application/
/opt/company/product/
/proc - プロセスとカーネル情報
procはProcessを意味します。
/procは実際のディスクにデータを保存する一般的なディレクトリではなく、Linuxカーネルがシステム情報をファイル形式で提供する仮想ファイルシステムです。
CPU情報は次のコマンドで確認できます。
cat /proc/cpuinfo
メモリ情報は次のように確認します。
cat /proc/meminfo
プロセスIDが1234の場合、/proc/1234ディレクトリで該当プロセスに関するさまざまな情報を確認できます。
/root - rootユーザーのホームディレクトリ
/rootはシステム管理者アカウントであるrootユーザーのホームディレクトリです。
一般ユーザー → /home/user
root ユーザー → /root
ルートディレクトリである/とrootユーザーのホームディレクトリである/rootは異なる意味を持ちます。
/run - ランタイムデータ
/runには、システムが起動して以降、サービスやプロセスが使用する一時ランタイム情報が保存されます。
PIDファイル、ソケット、サービス状態情報などが代表的です。
/run/
/run/user/
/run/systemd/
一般的に、/runのデータはメモリに保存され、システムを再起動すると初期化されます。
/sbin - システム管理コマンド
sbinは一般的にSystem Binaryの意味で使われます。
システム管理に必要なコマンドが配置されています。
/sbin/reboot
/sbin/fsck
最近のLinuxディストリビューションでは、/sbinが/usr/sbinを指すシンボリックリンクとして構成される場合が多いです。
/srv - サービスデータ
srvはServiceを意味します。
ウェブサーバーやFTPサーバーなど、システムが外部に提供するサービスデータを保存するディレクトリです。
/srv/www/
/srv/ftp/
ただし、実際のサービスデータの場所はディストリビューションや管理者の設定によって異なる場合があり、ウェブサーバーの場合/var/wwwを使用する場合も多いです。
/sys - システムとデバイス情報
sysは System を意味します。
/sysも /procのように、実際のディスクディレクトリというよりカーネルが提供する仮想ファイルシステムです。
主にデバイス、ドライバ、カーネルオブジェクトなどの情報を確認する際に使用します。
ls /sys/class
CPU、ネットワークインターフェース、ストレージなどの情報を確認したり、一部カーネル属性を制御する際に使用されます。
/tmp - 一時ファイル
tmpは Temporary の略です。
プログラムやユーザーが一時的に必要なファイルを保存するスペースです。
/tmp
システムポリシーにより再起動時や一定時間経過後にファイルが削除される場合があるため、重要なデータを保存する目的で使用してはいけません。
/usr - プログラムとシステムリソース
/usrは、Linuxで非常に大きな比重を占めるディレクトリです。
/usrにはプログラム実行ファイル、ライブラリ、文書、共有データを置きます。Unix System Resourcesという説明を見かけますが、これを歴史的に確定した正式な略語と考える必要はありません。重要なのは、通常は共有可能なシステム資源を置き、ユーザーの個人データや頻繁に変わるサービスデータとは区別する役割です。
| ディレクトリ | 用途 |
|---|---|
| /usr/bin | 一般コマンドとプログラム |
| /usr/sbin | システム管理用プログラム |
| /usr/lib | 共有ライブラリ |
| /usr/lib64 | 64ビット共有ライブラリ |
| /usr/share | 文書、アイコンなどアーキテクチャに依存しない共有データ |
| /usr/local | 管理者が直接インストールしたプログラム |
特に/usr/localは、パッケージ管理者がインストールしたプログラムと管理者が直接インストールしたプログラムを区別するのに便利です。
/var - 変化し続けるデータ
varはVariableの略です。
システムを運用しながら継続的に生成されるか、サイズが変化するデータを保存します。
/var/log
/var/cache
/var/lib
/var/spool
/var/log
システムとサービスのログファイルが保存されます。
ls /var/log
/var/cache
プログラムがパフォーマンス向上のために使用するキャッシュデータを保存します。
/var/lib
サービスとアプリケーションが継続的に使用する状態データが保存されます。
/var/spool
メール、印刷作業、予約作業のように処理を待っているデータを保存するために使用されます。
サーバーでは、特に/var/logのログファイルが増え続けるため、ディスク容量を多く占有する可能性があり、使用量を定期的に確認することをお勧めします。
Linuxディレクトリを簡単に覚える方法
最初からすべてのディレクトリの用途を覚える必要はありません。サーバー管理でよく使うディレクトリから次のように覚えると便利です。
/etc → 設定ファイル
/var → ログと絶えず変わるデータ
/home → 一般ユーザーデータ
/root → root ユーザーホーム
/usr → プログラムとライブラリ
/tmp → 一時ファイル
/dev → 装置
/proc → プロセスとカーネル情報
/sys → システムとデバイス情報
/boot → ブートファイル
/mnt → 一時マウント
/opt → 追加インストーラ
特に最初は/etcは設定、/varはログ、/usrはプログラム、/homeはユーザーファイルという4つをまず覚えると、実際のLinux管理に役立ちます。
Linuxディレクトリ構造の要約
Linuxディレクトリは各位置ごとに比較的明確な役割があります。システム設定は/etc、ログと可変データは/var、プログラムとライブラリは/usr、ユーザーファイルは/homeに主に保存されます。
また、/procと/sysは一般のディスクディレクトリではなく、カーネル情報を提供する仮想ファイルシステムという点も知っておくと良いです。
Linuxサーバーでは、パスを丸暗記するより、各ディレクトリが扱うデータと、そのシステムでの実際の配置を対応させると役立ちます。全体の慣例はLinux man-pagesのhier(7)、現在のsystemd系システムの配置はsystemdのfile-hierarchyでも確認できます。




