何かに精通し、それを回避したが、その概念を完全には理解していなかったことがありますか?それはほとんどの人よりも私に起こっているような気がします。これは苛立たしい気持ちですが、簡単に改善できることもよくあります。時々、それは「平易な英語」、別名素人の用語で概念を説明する誰かを必要とするだけです。それがこの記事の目的です。 ハードリンクについて話したい およびソフト(シンボリック)リンク 可能な限り最も基本的な用語で。この概念は、システム管理者にとってしばしば苦労しますが、非常に単純であることに気付くかもしれません。他に何もない場合は、これらのリンクを作成するための構文について説明します(多くの人が覚えにくいと感じています)。それでは、それに取り掛かりましょう。
ハードリンク
ハードリンクの概念は、今日説明する最も基本的なものです。 Linuxファイルシステム上のすべてのファイルは、単一のハードリンクで始まります。 リンク ファイル名とファイルシステムに保存されている実際のデータの間にあります。ファイルへの追加のハードリンクを作成することは、いくつかの異なることを意味します。これらについて話し合いましょう。
まず、古いファイル名とまったく同じデータを指す新しいファイル名を作成します。これは、2つのファイル名が異なるものの、同一のデータを指していることを意味します。たとえば、ファイル/home/tcarrigan/demo/link_test
を作成するとします。 hello worldと書く ファイル内で、ファイル名link_test
の間に単一のハードリンクがあります およびファイルの内容helloworld 。
[tcarrigan@server demo]$ ls -l
total 4
-rw-rw-r--. 1 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
ここでリンク数をメモします( 1 。
次に、/tmp
に新しいハードリンクを作成します 次のコマンドを使用して、まったく同じファイルに移動します。
[tcarrigan@server demo]$ ln link_test /tmp/link_new
構文はln (original file path) (new file path)
です。 。
ファイルシステムを見ると、両方のハードリンクが表示されています。
[tcarrigan@server demo]$ ls -l link_test /tmp/link_new
-rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
-rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 /tmp/link_new
ここでの主な違いはファイル名です。リンク数も変更されました( 2 )。最も注目すべきは、cat
新しいファイルの内容には、元のデータが表示されます。
[tcarrigan@server demo]$ cat /tmp/link_new
hello world
1つのファイル名に変更が加えられると、もう1つのファイル名はそれらの変更を反映します。権限、リンク数、所有権、タイムスタンプ、およびファイルの内容はまったく同じです。元のファイルが削除されても、データはセカンダリハードリンクの下に残ります。データへのすべてのリンクが削除された場合にのみ、データがドライブから削除されます。同じプロパティを持つ2つのファイルが見つかったが、それらがハードリンクされているかどうかわからない場合は、ls -i
を使用してください。 iノードを表示するコマンド 番号。一緒にハードリンクされているファイルは、同じiノード番号を共有します。
[tcarrigan@server demo]$ ls -li link_test /tmp/link_new
2730074 -rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
2730074 -rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 /tmp/link_new
共有iノード番号は2730074です 、つまり、これらのファイルは同一のデータです。
iノードの詳細については、こちらの記事全体をお読みください。
ハードリミット
便利ですが、ハードリンクで実行できることにはいくつかの制限があります。手始めに、それらは通常のファイル(ディレクトリや特別なファイルではない)に対してのみ作成できます。また、ハードリンクは複数のファイルシステムにまたがることはできません。これらは、新しいハードリンクが元のファイルシステムと同じファイルシステムに存在する場合にのみ機能します。
ソフトリンク
一般にシンボリックリンクと呼ばれます 、ソフトリンクは非正規ファイルと正規ファイルをリンクします。また、複数のファイルシステムにまたがることもできます。定義上、ソフトリンクは標準ファイルではなく、既存のファイルを指す特別なファイルです。ソフトリンクを作成する方法を見てみましょう。 ln -s
を使用します コマンドと次の構文:
ln -s (file path you want to point to) (new file path)
以下の例では、/home/tcarrigan/demo/soft_link_test
に新しいファイルを作成します。 ファイルの内容がsoftHello world 。次に、そのファイルへのソフトリンクを/tmp/soft_link_new
に作成します。 :
[tcarrigan@server demo]$ ln -s /home/tcarrigan/demo/soft_link_test /tmp/soft_link_new
[tcarrigan@server demo]$ ls -l soft_link_test /tmp/soft_link_new
-rw-rw-r--. 1 tcarrigan tcarrigan 17 Aug 30 11:59 soft_link_test
lrwxrwxrwx. 1 tcarrigan tcarrigan 35 Aug 30 12:09 /tmp/soft_link_new -> /home/tcarrigan/demo/soft_link_test
/tmp/soft_link_new
に注意してください 元の/home/tcarrigan/demo/soft_link_test
を指す単なるシンボリックリンクです 。 cat
の場合 /tmp/soft_link_new
のコンテンツ 、 soft Hello worldが表示されるはずです テキスト。
[tcarrigan@server demo]$ cat /tmp/soft_link_new
soft Hello world
これはすべて素晴らしいように聞こえますが、ソフトリンクを使用することにはいくつかの欠点があります。最大の懸念は、データの損失とデータの混乱です。元のファイルを削除すると、ソフトリンクが壊れます。この状況は、ダングリングソフトリンクと呼ばれます。 。元のファイルと同じ名前で新しいファイルを作成した場合、ぶら下がっているソフトリンクはまったくぶら下がっていません。これは、意図したかどうかに関係なく、作成された新しいファイルを指しているので、このことを忘れないでください。
ハードまたはソフト?
ここに明確な答えはありません。最適なリンクは、特定の状況に適したタイプです。これらの概念を覚えるのは難しいかもしれませんが、構文は非常に単純なので、それはプラスです! 2つを簡単に区別できるように、これを残しておきます:
- ハードリンクは常にファイル名をストレージデバイス上のデータにポイントします。
- ソフトリンクは常にファイル名を別のファイル名にポイントし、別のファイル名はストレージデバイス上の情報をポイントします。
うまくいけば、これにより、毎日の目標を達成するために必要なリンクタイプを処理するときに、それらを分離しておくことができます。
[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]