Linux でのリンクという用語は、ファイル システムにファイル パスまたはファイルの場所の URL を作成することと定義されています。 Linux には、ソフト リンクとハード リンクの 2 種類のリンクがあります。ソフトリンクの概念は非常に一般的で理解しやすいものです。 Windows のショートカット ファイルに精通している場合、ソフト リンクは特定のファイルのショートカットと考えることができます。ソフト リンクにはファイル全体が含まれているわけではなく、ファイル名またはファイルの詳細のみが含まれています。ファイルシステム上のそのファイルとの内部リンクを作成するために、ファイルのインデックス ノード (inode) のみを保持します。
Linux のハード リンクとソフト リンク
ハード リンクは、実際のサイズの元のファイルのリンクまたはパスです。一方、ソフト リンクは、システム内のファイルまたはフォルダーのショートカット URL またはパスを作成するだけです。この投稿では、ソフト リンクとハード リンクの詳細な説明と、Linux でのリンクのしくみについて説明します。
1. inode によるソフト リンクとハード リンク
Linux および Unix 系のオペレーティング システムでは、ソフト リンクは元のファイルへのリンクを示します。ファイルに一意のインデックス番号がある場合、その元のファイルに対して複数のソフト リンクを作成でき、すべてのソフト リンクがメイン ファイルを参照します。
ほとんどの場合、ソフト リンクはシンボリック リンクとも呼ばれます。ターミナル コマンド シェルを使用すると、ファイルのソフト リンクを簡単に作成できます。以下のコマンドは、ソフト リンクの作成をガイドします。
$ ln -s targetFile SourceFiles
これらのソフト リンクは、コマンド内のファイルを参照したり、コマンド内のノードを示したりするためによく使用されます。サーバー管理では、元のパスの代わりにソフト リンクとハード リンクがよく使用されます。
ハード リンクは、理解して使用するのが少し複雑です。先ほども言いましたが、メタデータと元のインデックス番号を含むファイルの別名です。ハードリンクは任意のディレクトリに配置できます。以下のターミナル コマンドを使用して、ファイルへのハード リンクを作成できます。
$ ln hard_link_target hard_link_output
Linux でのリンクについて言えば、高度な ln コマンドを使用して、ファイルとユーザーの詳細にリンクされているインデックス ノード数を調べることができます。ハード リンクでは、インデックス番号の数は、そのファイルのハード リンクの総数も示します。
ハード リンクに関する興味深い事実は、元のファイルを削除しても、ハード リンクがファイル システムに残ることです。 Linux でファイルを削除する唯一の方法は、ファイルを削除する前に、そのファイルの i ノード番号が 1 つだけであることを確認することです。
ソフト リンクとハード リンクの両方を削除しても、元のファイルは Linux ファイルシステムから削除されません。場合によっては、inode 番号が、Linux で誤って削除されたファイルを回復するのに役立つことがあります。
2. Linux のハード リンクとソフト リンクに関する事実
このステップでは、Linux でのソフト リンクとハード リンクのいくつかの事実と作業方法について説明します。 Linux でのリンクの概念を理解すると、リンクをより適切に作成するのに役立つ場合があります。
- ソフト リンクまたはシンボリック URL は、Linux システム上のファイルのショートカットです。
- 元のファイルを移動または削除すると、ソフト リンク パスが正しく機能しなくなります。
- ls -l コマンドを使用して、シンボリック リンクを表示できます。
- ソフト リンクを使用して、コマンドを実行したり、ディレクトリにリンクしたり、スクリプト内で使用したりできます。
- ファイルのソフト リンクを作成した後、そのファイルの名前を変更する場合は、ソフト リンク名も更新する必要があります。そうしないと、ソフト リンクが機能しません。
- ソフト リンクは、主にシステム上のファイルとディレクトリを相互リンクするために使用されます。
シンボリック リンクについていくつかの事実を見てきましたが、ハード リンクについても知っておく必要があるいくつかの事実があります。
- ソフト リンクと同様に、ls -l コマンドを使用して、システム上のハード リンクのリストを表示できます。
- ソフト リンクとは異なり、ハード リンクには同じ元のファイルがあります。いずれかを削除すると、残りは機能します。
- ハード リンクを削除しても、Linux ファイル システムのメイン ファイルには影響しません。
- 通常、ハード リンクのサイズはメイン ファイルと同じです。
- ファイルのハード リンクは作成できますが、Linux や Unix 系 OS のディレクトリのハード リンクは作成できません。
- 元のファイルのインデックス ノード値とハード リンクのインデックス ノード値は常に同じで、ファイル システム上の同じファイルを参照します。
3.ソフト リンクとハード リンクの長所と短所
上記のポイントで、Linux システムでハード リンクとソフト リンクがどのように機能するかの機能、作業方法、およびプロパティを見てきました。ここで、これら 2 つのファイル システムの長所と短所を発見しようとしています。
ソフト リンクまたはシンボリック リンクの主な利点は、簡単にソフト リンクを作成できることと、ディスク上で大量のサイズやブロックを必要としないことです。さらに、ソフト リンクを使用すると、任意のファイルとディレクトリのシンボリック リンクを作成することもできます。
ハード リンクの利点は、ファイルとハード リンクの両方が同じインデックス ノードを使用し、システム上で同じ量のスペースを使用するため、実際には両方のファイルをファイル システムに保持することです。そのため、誤ってまたは意図的にメイン ファイルを削除または削除しても、ハード リンクは引き続き実行可能です。
ここで、ソフト リンクとハード リンクの短所を見ると、どちらにもいくつかの制限があることがわかります。ソフト リンクの場合、メイン ファイルを削除、名前変更、または削除すると、ソフト リンクは機能しなくなります。
4.メイン ファイルを削除するとどうなるか
メイン ファイルを故意または誤って削除した場合にどうなるかについて考えたことがあるかもしれません。ハード リンクとソフト リンクは引き続き機能しますか。ここでは、ターゲット フォルダーのソフト リンクを作成しました。ここで、メインのターゲット ディレクトリを削除すると、システムは、そのソフト リンクの次回の実行時にゴミ箱のソフト リンクを削除することを提案します。
以下のコマンドを使用して、「ターゲット」ファイルのソフト リンクを作成しました。次に、メイン ファイルを削除し、それがシンボリック リンクに与える影響を確認します。
ln -s target softlink
ハード リンクの唯一の欠点は、Linux システムのどのディレクトリにもハード リンクを作成できないことです。さらに、異なるファイルシステムのハード リンクを作成することもできません。
最後の言葉
投稿全体で、Linux でソフト リンクとハード リンクがどのように機能するかについての詳細な説明を見てきました。ディレクトリへのハード リンクを作成する場合は、最近のコンピューターではディレクトリのハード リンクを作成することはほとんど不可能であることに注意してください。ただし、ディレクトリへのソフト リンクを作成することはできます。
この投稿がお役に立てば幸いです。はいの場合は、この投稿を友人や Linux コミュニティと共有してください。また、最も便利だと思うリンク、またはシステムで最もよく使用しているリンクをお知らせください。