Unixファイルシステム構造の利点は何ですか?

Unixファイルシステム構造の利点は何ですか?

Linux(たとえばDebian / Gnu Linux)にアプリケーションをインストールすると、そのアプリケーションのファイルがファイルシステムのさまざまなディレクトリにコピーされます。

いくつかのスクリプトが入ります/usr/共有../usr/ローカル他のファイル/var../ログ..など/など。

私にとっては、ファイルシステムについて少し学び、ほとんどのディレクトリには特定の目的のためのファイルが保存されているので、それは重要ではありませんでした。これは、「1つのことをしてそれをうまくやる」というUnixの哲学と非常に一致しています。

しかし、私の質問はこれらのディレクトリ構造の利点は何ですか?あるいは、単に昔のUnix時代の遺物かもしれません。 (例:すべてのアプリケーションのファイルが特定の「フォルダ」内の単一ウィンドウの使用と比較)

ベストアンサー1

どんな組織を選んでも、どんな仕事も簡単になり、どんな仕事も難しくなります。

Unix方式(bin、、、、...)でファイルを種類別に整理すると、ファイル操作が簡単になりますmanlib/pythonコマンドを実行したい場合は、どのパッケージが提供していても、そのコマンドが見つかる場所を知ることができます。文書を検索したい場合は、すべてが1か所にあります。プログラムがVim構文強調モジュール、zsh補完、またはPythonバインディングを提供している場合、関連ファイルはvim / zsh / pythonにある場所にあります。

Unixはまた、使用パターンに従ってファイルを整理します。設定ファイルが入力され/etc、通常動作中に変更されないファイルが入力され/usr、自動的に変更されるファイルが入力されます/var。ユーザーデータは保護されています/home。これは、構成管理(構成内容/etcおよびインストール済みパッケージリストの管理)に役立ちます。バックアップ戦略を定義することも便利です。その内容は/etc非常に重要であり、/homeその内容は/usr簡単に再ダウンロードできます。

Unixアプローチの主なコストは、複数のディレクトリに分散ソフトウェアをインストールすることです。しかし、最新のUNIXシステムにはとにかくパッケージマネージャがあります。多くのディレクトリ内のファイルを管理することは決して最も複雑な作業ではありません(依存関係を追跡するのは非常に便利ですが、はるかに困難です)。

Windowsと比較してみてください。 Windowsはパッケージ管理なしで起動し、各アプリケーションはどこかに独自のディレクトリを作成しました。プログラム、静的データ、ユーザーデータなど、すべてのファイルは通常そのディレクトリにあります。ただし、時々プログラムは、競合するライブラリ(「DLL地獄」)に関係なく、共通のシステムディレクトリに配置されます。時間が経つにつれて、Windowsはマルチユーザーになり、システムディレクトリからユーザーディレクトリを分離する必要がありました。 Windowsはまた、設定ファイル(Unix用/etc)と一部のシステムデータ(Unix用)の中央の場所で/varあるレジストリを作成します。これは主にパッケージ管理が不足しており、シングルユーザーシステムとしての初期記録がないため、歴史的な遺物に近い。 Windows のアプローチにはいくつかの制限があります。つまり、ソフトウェアパッケージが簡単にやり取りすることはできません。たとえば、インストールされているソフトウェアのほとんどはデフォルトのコマンド検索パスには表示されないため、どのようなスクリプトでも正しく動作しません。インストーラは通常、特別な場合としてメニューアイコンを提供します。これは別のシステムディレクトリ(Unixに似ています)に配置されます。

Unixアプローチの1つの制限は、複数のバージョンのパッケージが簡単に共存できないことです。これは、パッケージをアップグレードするときに特に問題になります。 2つの利点を最大限に活用する方法は、各パッケージを独自のディレクトリ/optに展開し、パッケージディレクトリから構造へのシンボリックリンクフォレストを作成することです/usr。ソフトウェアとはまさにこれです。お店する。

要約すると、Unix アプローチを使用すると、ファイルの操作、管理、およびパッケージのやりとりが容易になりますが、とにかくこれが優れています。 Windowsアプローチでは、パッケージを手動で管理するのが簡単ですが、便利な機能を得るにはUnixモデルに移動する必要があります。

おすすめ記事