RHCSA試験準備のこの部分では、リンクに注意を向けます。リンクには、ハードリンクとソフトリンクの2種類があります。この記事では、リンクを作成および削除する方法について説明し、ハードリンクとソフトリンクの両方の背後にある基本的な背景についても説明します。
このチュートリアルでは、次のことを学びます。
- シンボリック(ソフト)リンクとは
- ハードリンクとは
- シンボリックリンクを作成する方法
- ハードリンクを作成する方法
- リンクを削除する方法
lnのマニュアルページ コマンド 使用されるソフトウェア要件と規則
| カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
|---|---|
| Red Hat EnterpriseLinux8またはその他のGNU/Linuxディストリビューション | |
| N / A | |
rootまたはsudoを介したLinuxシステムへの特権アクセス コマンド。 | |
# –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudoを使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
GNU/Linuxシステムのリンクとは
すべてのファイルには、作成、変更、アクセス、ファイルの所有権、およびそのアクセス許可に関する情報が、いわゆるiノードに格納されています。 。すでに説明した保存されたメタデータに加えて、iノード また、ファイルの実際のコンテンツがファイルシステムに保存されているデータブロックに関する情報も保存します。
したがって、iノードの主な機能 ファイルやディレクトリなどのファイルシステムオブジェクトを記述することです。特定のinodeに関連付けられたファイルシステムオブジェクトにアクセスするため ユーザーにハードリンクを提供する必要があります これは実際のファイル名またはディレクトリ名です。
これは、ハードリンクである最初のタイプのリンクを説明しています 。 GNU / Linuxオペレーティングシステムの2番目のタイプのリンクは、シンボリックリンクです。 別名ソフトリンク。ハードリンクとシンボリックリンクの違いは、シンボリックリンクはハードリンクのみを指す、つまり、既存のファイル名またはディレクトリ名を指すことです。簡単に言うと、リンクを使用すると、ユーザーは複数の名前でファイルやディレクトリにアクセスできます。
ハードリンク
ハードリンク以降 iノードに関連付けられています これはファイルシステム機能であり、ハードリンクはファイルシステムを横断できないため、同じファイルシステム内でのみ有効です。さらに、ディレクトリにハードリンクを作成することはできません。ディレクトリからハードリンクを作成しようとすると、hard link not allowed for directoryになります。 エラーメッセージ。
いくつかのハードリンクを作成しましょう。この例では、最初にsandboxという任意のファイルを作成します。 テキストlinuxconfig.orgを含む 。準備ができたら、複数のハードリンクを作成します さまざまな場所を指すこのファイルに移動します。
-
sandboxというファイルを作成します テキストRHCSAを含む ユーザーのホームディレクトリ内~/。$ echo "RHCSA" > ~/sandbox
catを使用してファイルの内容を確認します コマンド:$ cat ~/sandbox RHCSA
- ユーザーのホームディレクトリ内にある場合でも、
sandboxへのハードリンクを作成します/tmp/からのファイルhardlink1というディレクトリ 。$ ln sandbox /tmp/hardlink1
次に、新しく作成されたハードリンク
/tmp/hardlink1の内容を確認します。 。/tmp/hardlink1のコンテンツ および元のsandboxファイルは同じである必要があります:$ cat /tmp/hardlink1 RHCSA
- 両方のファイル名に関連付けられているリンク情報を確認してください
sandboxおよび/tmp/hardlink1。$ ls -l /tmp/hardlink1 -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1 $ ls -l ~/sandbox -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /home/linuxconfig/sandbox
関連する番号
<中央>注2に注意してください 上記の出力で示されているように。この数は、特定のiノードに関連付けられているハードリンクの数を示します。
この段階では、元のsandboxの間に実際の違いはないことを理解することが重要です。 新しく作成された/tmp/hardlink1ファイル。どちらも同じiノードを指しています 異なるファイル名を使用します。 -
unlinkを使用してハードリンクを削除します またはrm指図。
$ unlink sandbox $ ls -l /tmp/hardlink1 -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
この場合、両方のrm またはunlink コマンドはハードリンクを削除しますが、実際の関連データとiノードは削除しません。 sandbox以降 ハードリンクが削除されました1のみがあります 元のiノードに関連付けられたままのハードリンク。次に、このファイルに関連付けられている最後のハードリンクを削除します:
$ rm /tmp/hardlink1
この時点で、元のファイルのコンテンツを指すiノードへのリンクが失われるため、このファイルは削除されたと見なされます。 iノードを指すハードリンクがない場合、ファイルシステムはこのiノードの場所を新しいデータで上書きする可能性があります。
unlinkコマンドを使用して、(適切な権限がある場合)任意のファイルを削除できますか?今すぐお試しください:
$ touch file $ unlink file
上記のコマンドを理解している場合は、このチュートリアルで説明されているように、GNU/Linuxハードリンクをマスターしています。
シンボリックリンク
ハードリンクに加えて、GNU/Linuxオペレーティングシステムで利用可能なさまざまなタイプのリンクもあります。 シンボリックリンク ファイルシステムをまたがることができ、シンボリックリンクを作成することもできます。 ディレクトリの。ただし、実際のiノードではなくシンボリックリンク 、既存のハードリンク(ファイルまたはディレクトリ名)にのみリンクします。このため、シンボリックリンクが指している実際のハードリンクを削除すると、シンボリックリンクが切断されます。
- まず、遊ぶサンドボックスオブジェクトをいくつか作成しましょう。この場合、
mydirというディレクトリを作成します。 このディレクトリ内に、myfileというファイルを作成します。 。$ mkdir mydir $ touch mydir/myfile
- 次に、既存のディレクトリの新しいシンボリックリンクを作成します mydir
lnを使用する-sを組み合わせたコマンド オプション。$ ln -s ~/mydir /tmp/symdir
これで、
symdirというシンボリックリンクが作成されました。/tmp内にあります ディレクトリ。$ cd /tmp/ $ ls -l symdir lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
上記の出力の最初の文字に注意してください。この場合、文字
<中央>注lシンボリックリンクを扱っていることを示します。
シンボリックリンクを作成するときは、lnに注意してください。 コマンドは、文字列として提供された実際のパスを格納します。同じディレクトリを使用しない場合、多くの場合、シンボリックリンクが機能するために注文するためのフルパスを指定する必要があります新しく作成された
symdir以前に作成されたファイルmyfileが含まれている必要があります :$ cd symdir $ ls myfile $pwd /tmp/symdir
演習
- シンボリックリンクで遊んでください。ファイルへのシンボリックリンクを作成した後、元のファイルを削除して、シンボリックリンクで何が起こったかを確認します。
-
lsを実行するとどうなりますか 引数が1つだけのコマンド。たとえば、次のコマンドを実行しますln -s /etc/services。何が起こったのですか? - ファイルへのシンボリックリンクを作成するためにファイルを所有する必要があるかどうかを判断します。同じルールがハードリンクにも適用されますか?