ホームページ  >  記事  >  システムチュートリアル  >  Linuxのハードリンクとソフトリンクを徹底的に理解する

Linuxのハードリンクとソフトリンクを徹底的に理解する

PHPz
PHPz転載
2024-02-13 20:20:02778ブラウズ

ハード リンクとソフト リンクは、Linux システムにおける 2 つの一般的なリンク ファイル タイプです。ハード リンクとソフト リンクの概念について詳しく知りたい場合は、調査内容をご案内します。この記事を読めば、ハードリンクとソフトリンクの違いや特徴がよくわかります。

まず、Linux システムでは、2 種類のリンク ファイルが存在します。1 つはハード リンク (Hard Link)、もう 1 つはシンボリック リンク (Symbolic Link) とも呼ばれるソフト リンクです。

ハードリンク

Linux システムでは、ln コマンドを使用してハード リンクを作成できます:

ln [パラメータ] [ソース ファイルまたはディレクトリ] [宛先ファイルまたはディレクトリ] Linuxのハードリンクとソフトリンクを徹底的に理解する

ファイル システムでは、各ファイルにはインデックス ノード (Inode インデックス) があります。このインデックス ノードはファイルを識別するために使用されます。ハード リンクはこのインデックス ノードを通じてリンクされます。ハード リンクは、同じファイル システム内のファイル間でのみ作成でき、ディレクトリは作成できません。ただし、複数のハード リンクを作成できます。つまり、複数のファイルが同じインデックス ノードをポイントしたり、1 つのファイルに複数のパス名を設定したりできます。 , そのため、1 つのファイルに複数のファイル名を対応させることができます。

ls コマンドを使用して、ソース ファイルと作成したばかりのハード リンクのインデックス ノードを表示できます。

Linuxのハードリンクとソフトリンクを徹底的に理解する

この図から、ソース ファイルとハード リンク ファイルのインデックス ノードが同じであることがわかります。したがって、ソース ファイルとハード リンク ファイルは同じインデックス ノードを指しています。

では、なぜディレクトリ内にハードリンクを作成できないのでしょうか?やるだけやってみよう。

Linuxのハードリンクとソフトリンクを徹底的に理解する

上の図に示すように、ユーザーはディレクトリのハード リンクを作成することはできません。ディレクトリ ツリーは誰でも知っています。ディレクトリのハード リンクを作成する場合は、慎重に検討してください。この場合、ディレクトリ ツリーは変更されますか? 循環しています。このディレクトリ内のファイルを見つけたい場合、名前でファイルを見つけることはできません。

ハード リンクは、ソース ファイルのコピーを作成することと同じです。ハード リンク ファイルの内容が変更されると、ソース ファイルの内容も変更されます。

Linux システムで開発しているときに、誤っていくつかのファイルを削除し、それを取得しようとしても何もできないという状況に遭遇したことがありますか?どうすればよいでしょうか?

復元方法がわからない場合は、経験から学び、知恵を得ることができます。次回は、このファイルに複数のリンクがあるように、さらにいくつかのハード リンクを作成します。リンクの 1 つであっても、追加のソース ファイルや他のハード リンク ファイルは引き続き使用できますが、ファイルからインデックス ノードへのリンクのみが削除されるため、リンクの 1 つを削除してもインデックス ノードや他のリンクには影響しません。 、最後で唯一のリンクが削除されない限り、問題ありませんが、最後のストローを保存する必要があります。

ハードリンクを削除して見てみましょう:

Linuxのハードリンクとソフトリンクを徹底的に理解する

ただし、Linux システムでは複数のファイル システムが存在し、これらのファイル システムは異なるディスクまたはパーティションに配置されます。前述したように、ハード リンクは同じファイル システムの下にのみ作成できます。ちょっと不便じゃないですか?

はい、ハード リンクはこのようにしかなりませんが、賢い人間はどうすればこのようにしかなりませんか?このとき、ソフト リンクが登場します。では、ソフト リンクはどうなるのでしょうか?

ソフトリンク

Linux システムでは、Windows のショートカットと同様に、ソフト リンクでファイルまたはディレクトリを共有できます。

ソフト リンクのコンテンツは、単純にリンクまたはパスとみなすことができます。ソフト リンクを使用すると、www を使用するのと同じように、ソフト リンクのコンテンツを通じてリンクまたはパスのコンテンツにアクセスします。 baidu.com リンクをクリックして Baidu にアクセスするか、Ubuntu で sudo vim /etc/network/interfaces を使用してパス /etc/network/interfaces のコンテンツにアクセスします。

前述したように、ハードリンクは同一ファイルシステム内でしか作成できないため、ソフトリンクにはこの制限はありませんが、この制限を取り除くためにソフトリンクが作成されていると理解できます。

ソフト リンク ファイルは、任意のファイル システム内の任意のファイルまたはディレクトリを指すことができます。それだけでなく、ソフト リンクは存在しないファイルを指すこともできますが、存在しないファイルへのハード リンクを作成することはできません。

この時点で、ソフト リンクとは何かを理解する必要があります。

Linux システムで ln コマンドを使用してソフト リンクを作成します。これはハード リンクを作成するコマンドと似ています。試してみましょう:

\1. ソフト リンクの作成:

Linuxのハードリンクとソフトリンクを徹底的に理解する

\2. ソフト リンクを削除します:

Linuxのハードリンクとソフトリンクを徹底的に理解する

上の図から、ソース ファイルが削除されても、ソフト リンク ファイルの名前がディレクトリに表示されたままであることがわかりますが、実際にソフト リンク ファイルを表示すると、実際には存在しません。 「デッドリンクはディレクトリに表示されたままです。実際、これは理解するのが難しくありません。Windows のショートカットについて考えてみましょう。これも同様です。Windows にインストールされている APP のソース ファイルをすべて削除すると、そのショートカットはまだデスクトップに表示されていますが、マウスでショートカットをクリックすると、ファイルが存在しないことを示すウィンドウがポップアップ表示されます。

Linuxのハードリンクとソフトリンクを徹底的に理解する

Windows デスクトップにショートカットを置きたくない場合は、ショートカットを直接削除できます。ソフト リンクも同様で、ソフト リンクを直接削除できます。

ソフト リンクを作成するとき、小さな問題に注意する必要があります。私のように相対パスを使用しないでください。つまり、相対パスではなく絶対パスを使用する必要があります。相対パスで作成されたソフト リンクにはアクセスできません。

にアクセスするとエラーが報告されます。

シンボリック リンクのレベルが多すぎます。

エラーを報告するこの行が表示された場合は、絶対パスに変更すると問題が解決します。

以下では、実際のシナリオでソフト リンクを使用する 2 つの場所について簡単に説明します。

#「

\1. 常に大量のコマンドを実行する必要がある場合があり、実行されるコマンドはさまざまなディレクトリのパスに対応しています。一部のパスは非常に長く、覚えるのが困難です。パス全体を入力するのは非常に面倒です。低い場合はソフトリンクの役割が反映されますが、現在のパスの下にこの長くて臭いパスへのソフトリンクを作成すると、パスははるかに単純になりますか?

##「

\2. 仮想マシンにさまざまな種類のクロスコンパイラをインストールしましたが、コンパイラごとに異なるサードパーティ ライブラリが使用される可能性があります。その方法は、ヘッダー ファイルをコンパイラのパスに置く必要があります。ヘッダー ファイルプログラムのコンパイル時に自動的に見つかりますが、このライブラリ ファイルは比較的大きくなります。各コンパイラがそれを使用する必要がある場合、それぞれを移動するとさらに多くのスペースが必要になります。このとき、ソフト リンクの役割が発生します。ソフト リンクでは、ソフト リンクを作成してライブラリ ファイルを共有します。これにより、ディスク領域の使用量も削減できます。

# ソフトリンクの機能は数多くありますが、さまざまなシーンに応じてソフトリンクの機能を柔軟に活用することで、結果的に作業が楽になったり、作業効率が向上したりする可能性があります。 実際のアプリケーションでは、ハード リンクの使用は少なく、ソフト リンクの使用が多くなります。

以上がLinuxのハードリンクとソフトリンクを徹底的に理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。