[Linux] 基本 IO -- ソフト リンクとハード リンク

序文

前回の Linux 記事では、ファイル システムでのディスク ファイルの管理について学びました。
この記事では、ファイル システムの基本的な知識を使用して、ソフト リンクとハード リンクを理解します

ここに画像の説明を挿入

1.ソフトリンク

1. ソフトリンクの構文

最初にファイル myfile.txt を作成し、いくつかのコンテンツを書き込みます
ここに画像の説明を挿入

软链接
ln -s 文件名 软链接名
ここに画像の説明を挿入

2. ソフトリンクの性質

ここに画像の説明を挿入

また、my_file.txt の内容を cat ソフト リンクから表示することもできます。
同時に、ll -iコマンドを使用してファイルの inode 番号を表示できることもわかりました。

ここに画像の説明を挿入
青い部分がファイルのinode番号です

私たちは発見します软链接my_soft的inode和myfile.txt不一样

my_soft ソフト リンクは one で独立的新的链接文件、独自の がありinode编号、独自のソフト リンクが必要です属性和内容
。ソフト リンクの内部は自己所指向的文件的路径

3. ソフトリンクの適用

ソフトリンクを理解したら、次にソフトリンクの適用に触れます

たとえば、パスを作成し
ここに画像の説明を挿入
、hello world を出力する小さなプログラムを作成し、それをこの深いパスに配置する
ここに画像の説明を挿入
と、渡すことができます。软链接链接这个小程序

ここに画像の説明を挿入
次に、このソフトリンクを介してプログラムを使用できます.
ここに画像の説明を挿入
この観点から、ソフトリンクを使用して、このディレクトリに存在しないプログラムを転送できます不用指明路径就可以直接使用

软链接其实就相当于Window下的快捷方式

2.ハードリンク

1. ハードリンクの構文

硬链接
ln ファイル名 ハードリンク名
ここに画像の説明を挿入

2. ハードリンクの性質

ここに画像の説明を挿入
myfile.txt の内容は、cat コマンドを使用して表示することもできます.
ハード リンクとソフト リンクの違いは何ですか? コマンドを使ってファイルの inode を確認してみ
ましょうll -i
ここに画像の説明を挿入

ハードリンクとソフトリンクで形成されるファイルの inode 番号が異なることがわかりました. 上で述べたように、ソフトリンクは新しい独立したファイルであり、独自の inode を持つことになります.新しい文書です硬链接的文件的inode和链接文件的inode一样

my_hard hard link and target file 共用一个inode编号, これは、ハード リンクとターゲット ファイルを意味します.共用一个inode
ハード リンクの本質は、実際にはinode目录里新建一个文件名和该文件inode的映射关系
の 1 つです. これは、ファイルが同時に複数のファイル名/ハード リンクによって指されていることを記録します.硬链接个数属性

ファイル多个硬链接がときどき、ハード リンクの数が属性の 1 つであるため、rm の削除は効果を発揮しません. ファイルのハード リンクの数が 1 より大きい場合、 rm指令本质只会将硬链接个数-1rm は実際にはファイルを削除しませんが、意志删除指定的硬链接その時点で硬链接个数为1、rm delete は実際にファイルを削除します。

3. ソフトリンクの補足知識

ここでは、ソフト リンク ファイルに保存されているコンテンツがファイルのパスであることを証明するために、ソフト リンクとハード リンクを使用します。

myfile.txt ファイルを作成します。このファイルにも 2 つのハード リンクがあり、ソフト リンク
myfile.txt の内容は 5 つの文「hello world」です。
ここに画像の説明を挿入

次に、ハード リンク myfile.txt を削除しようとします. この時点では、ハード リンクの数が 1 より大きいため、rm はソース ファイルを削除しません. myfile.txt を削除した後、2 つのハード リンク my_hard と my_hard1硬链接个数-1
ここに画像の説明を挿入
は問題は、ハード リンクの数が確かに -1 であり、ファイルの内容は依然として "hello world" の 5 つの文ですが、ソフト リンクが無効であることがわかりました。

これは、ソフトリンクの内容が絶対パスで保存されているためで、同様に~/lesson/mydemo/myfile.txt、ファイル名 myfile.txt を削除すると、ソフトリンクが自然に見つからなくなり、無効になります。

4. ハードリンクの適用

ディレクトリもファイルであることはわかっているので、目录的inode结构体和普通文件的inode结构体是相同的ディレクトリにもハード リンクの数があります. ディレクトリを作成し、そのハード リンクの数を確認します.
ここに画像の説明を挿入
ディレクトリが作成されると、そのハード リンクの数が硬链接数就是2 であることがわかりました. では、dir1 のハード リンクの他に、他にどのようなハード リンクがあるのでしょうか?
次に、ll -a -iコマンドを使用して、隠しファイルとファイルの i ノード番号を同時に表示します。
ここに画像の説明を挿入

このとき、.これも現在のディレクトリを指していることを思い出しました. 2 つの inode 番号は同じであるため、 は.現在のディレクトリへのハード リンクです. はディレクトリへのハード リンクである
ため,当然 もディレクトリへのハードリンク、はい.. .上级目录的硬链接
ここに画像の説明を挿入

ディレクトリもファイルであることはわかっているので、ファイルは木のようなものになるのですが、ディレクトリの上下を切り替えたい場合は多叉树、 . , を飛び越える必要があります。ファイル システム ディレクトリの有向非循環グラフ構造が壊れ、ディレクトリ サイクルが作成される可能性があります。.. 和当前目录的子目录名向上级目录向下级目录
Linux不允许对目录做硬链接
ここに画像の説明を挿入

結論

ソフトリンクとハードリンクの学習はほぼ同じです、読んでくれてありがとう

この記事が役立つと思われる場合は、ブロガーをサポートすることをお勧めします。これは私にとって非常に重要です.
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_72563041/article/details/129950387