Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxのソフトリンクとハードリンクの違いを理解する

Linuxのソフトリンクとハードリンクの違いを理解する

動作しているLinuxシステムで、ディレクトリの複数のレイヤー内にネストされたファイルがあるとします。そのファイルに簡単にアクセスするには、デスクトップにそのファイルのショートカットを作成します。シンボリックリンク(ソフトリンクとも呼ばれます)を使用することができます。ハードリンクと呼ばれる別の形式のリンクもあります。この記事では、ソフトリンクとハードリンクの違いを説明し、どちらを使用する必要があるかを見ていきます。

ソフトリンクとハードリンク

ソフトリンクまたはシンボリックリンクは、単なるシンボリックリンクです。これは、単にターゲットファイルパスへのポインタです。ソフトリンクは、ファイルパスにあるファイルまたはフォルダが実際に存在するかどうかを気にしません。ファイルまたはフォルダが存在しない場合は、シンボリックリンクが壊れてしまいます。シンボリックリンクは編集または削除できますが、ターゲットファイルには影響しません。

一方、ハードリンクには、ターゲットファイルに追加の名前を付ける効果があります。一方のファイルのコンテンツを編集すると、もう一方のファイルのコンテンツも変更されます。つまり、ソフトリンクはターゲットファイルパスへの単なる参照であり、ハードリンクはターゲットファイルのデータへの直接リンクです。

以下に、ソフトリンクとハードリンクがどのように機能するかを示します。

動作中のソフトリンク

4行のテキストを含む「first_file.txt」というファイルがあるとします。

Linuxのソフトリンクとハードリンクの違いを理解する

ホームディレクトリにソフトリンクを作成します。

ln -s first_file.txt ~/sl-firstfile.txt

GNOMEデスクトップ環境では、ファイルを右クリックして[リンクの作成]を選択するだけで、ファイルのソフトリンクを作成できます。名前が「.txtへのリンク」

のようなソフトリンクが作成されます。 Linuxのソフトリンクとハードリンクの違いを理解する

「sl-firstfile.txt」の内容を表示しようとすると、「first_file.txt」と同じであることがわかります。

Linuxのソフトリンクとハードリンクの違いを理解する

ファイルマネージャでこれら2つのファイルを見ると、ソフトリンクが元のファイルへのショートカットとして表示されます。ファイルのアイコンの黒い矢印はこれを示しています。

Linuxのソフトリンクとハードリンクの違いを理解する

コマンドls -lを使用して現在のディレクトリのリストを表示しようとすると 、ソフトリンクがターゲットファイルを指している場所を確認できます。 「sl-firstfile.txt」のアクセス許可文字列の最初の文字は「l」です。これは、このエントリがリンク用であることを意味します。

Linuxのソフトリンクとハードリンクの違いを理解する

ソフトリンクの削除動作

ターゲットファイルが削除されても、ソフトリンクは引き続き存在します。

Linuxのソフトリンクとハードリンクの違いを理解する

ただし、「ぶら下がっている」または「壊れた」リンクになっていて、役に立たない。

Linuxのソフトリンクとハードリンクの違いを理解する

ここで、同じ名前の別のファイル「first_file.txt」を作成すると、ソフトリンクが再びアクティブになります。

:ソフトリンクに遭遇し、リンクが作成されたファイルの絶対パスを見つけたい場合は、readlinkを使用してください。 以下に示すコマンド。

Linuxのソフトリンクとハードリンクの違いを理解する

このコマンドの出力は、元のファイルの絶対パスになります。

動作中のハードリンク

次に、ホームディレクトリに同じファイルのハードリンクを作成します。これは、次のコマンドで実行できます。

ln first_file.txt hl-first-file.txt

:ソフトリンクとハードリンクの両方を作成する方法は、lnを使用します 指図。唯一の違いは-sです シンボリックリンクを示すフラグ。

ハードリンクを作成する別の方法は、linkを使用することです。 コマンド。

link hl-firstfile.txt hl2-firstfile.txt

両方のファイルをチェックすると、内容が同じであることがわかります。

Linuxのソフトリンクとハードリンクの違いを理解する Linuxのソフトリンクとハードリンクの違いを理解する

GUIでは、両方のファイルが別個のエンティティとして表示されます。ハードリンクの存在についての兆候はありません。

Linuxのソフトリンクとハードリンクの違いを理解する

ハードリンクファイル「hl-firstfile.txt」に新しい行を追加してみましょう。

echo "hello" >> hl-first-file.txt

データの変更は両方のファイルで表示できます。

Linuxのソフトリンクとハードリンクの違いを理解する Linuxのソフトリンクとハードリンクの違いを理解する

ハードリンクが作成されると、2つの異なるファイルが存在するかのようになりますが、それらのデータはリンクされます。一方の変更はもう一方にも反映されます。

クイックヒント :ソフトリンクとハードリンクを作成するときは、リンクが作成されるファイルと同じ拡張子を使用することをお勧めします。

ハードリンクの削除動作

ハードリンクの場合、元のファイルまたはハードリンクの削除は問題ではありません。ファイルに最初に保存されたデータには、引き続きハードリンクからアクセスできます。

Linuxのソフトリンクとハードリンクの違いを理解する Linuxのソフトリンクとハードリンクの違いを理解する

ソフトリンクはいつ役に立ちますか?

ソフトリンクがファイルのショートカットとして表示されることに気づきました。ディレクトリの複数のレイヤー内にファイルがあり、簡単にアクセスできる場所にファイルを保存したい場合は、そのファイルの短いリンクを作成することをお勧めします。

ハードリンクはいつ役に立ちますか?

ファイルのハードリンクが作成されると、ファイルまたはハードリンクへの変更が両方に反映されることを確認しました。

バックアップサーバーがあるとしましょう。増分バックアップメカニズムが使用されており、最後のバックアップ以降のファイル/フォルダーへの変更のみが反映されます。サーバー内のファイルとコンピューター内の対応するコピーの間にハードリンクを作成できます。バックアップが発生すると、ファイルの名前が変更された場合でも、コンピューター内のファイルへの変更は、サーバー内の対応するハードリンクされたファイルに自動的に反映されます。

結論

ソフトリンクとハードリンクにはそれぞれ独自の用途があり、さまざまな状況で使用する必要があります。それらの違いを理解することで、リンクを作成するときに、より適切な決定を下すことができます。ディレクトリ用にソフトリンクとハードリンクを作成することもできます。ソフトリンクはファイルシステム間で作成できますが、ハードリンクは同じファイルシステム内でのみ作成できます。


  1. プット、プリント、Pの違いを理解する

    Rubyで何かを印刷する方法はたくさんあります。 これが最も便利です : プット 印刷 p しかし、これらはどのように異なりますか? そしていつどちらを使うべきか ? それがこの記事で学ぶことです! 改行なしで印刷する方法 ユーザーが見られるように画面に何かを印刷する場合は、通常、putsを使用します 。 このように : puts Hello there! Putsは、メッセージを使用するたびに、メッセージの最後に新しい行を自動的に追加します。 改行が必要ない場合は、printを使用してください 。 例 : print 123 次回printするとき 最後の

  2. Windows 10 と Windows 11 の違いは?

    Microsoft は最新の Windows 11 をリリースし、多くの新機能と改善を行いました。また、多くのパッチとアップデートにより、Windows 10 は新しい Windows 11 よりも安定した OS になりました。同社によると、2025 年以降に Windows 10 でのサポートが終了するため、Windows 11 または Windows 10 へのアップグレードを決定するのに十分な時間があります。 Windows 10 を快適に使用してください。この記事では、Windows 10 と Windows 11 の比較を用意しました。 新しい OS に切り替えるか、Windows