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
。何が起こったのですか? - ファイルへのシンボリックリンクを作成するためにファイルを所有する必要があるかどうかを判断します。同じルールがハードリンクにも適用されますか?