MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


Linuxにおけるリンクについて
profile-img
投稿者: fujioka090...さん
投稿日:2023/03/24 11:35
更新日:
like-img
分類
技術
テクノロジー
Unix系サーバ
キャリア
運用・保守
投稿内容

今回はLinuxにあるlnコマンド及びリンクの考え方について説明しようと思います。


lnコマンドというのはファイルのハードリンクやシンボリックリンクを作成するために使用されるコマンドです。

ハードリンク及びシンボリックリンクの説明を下記に示します。


◎ハードリンク

→基本的にファイルに対してのみ作成可能。(ただしスーパーユーザーのみディレクトリのハードリンクを作成することはできる)

ストレージ上にあるファイルデータ本体を参照するためのリンクを複製するイメージ。

iノード番号はリンク元ファイルとリンク先ファイルで同じ番号になっている。

例えばAというファイルとAから作成したBというハードリンクが有った場合、Aだけを削除してもハードリンクのBからファイルデータへアクセスすることができるため、ファイルデータ本体は削除されない。

しかし、AとB両方を削除した場合はファイルデータへアクセスするためのリンクがすべて削除されたため、ファイルデータ自体も削除されることになる。

なお、ファイルシステムが異なるストレージへハードリンクは作成できない。


◎シンボリックリンク

→ファイル及びディレクトリ両方作成可能

iノード番号はリンク元ファイルとリンク先ファイルで別の番号になっている。

シンボリックリンクの内容はリンク元ファイルへのリンク情報のみとなっている。

リンク元ファイルを削除すればストレージ上のファイルデータは削除されるが、シンボリックリンクを削除してもファイルデータ削除されない。


ハードリンクはストレージ上にあるデータ本体のリンク、シンボリックリンクはWindowsでいう「ショートカットファイル」みたいなイメージです。

それではハードリンクとコピーはどのように異なっているのかについてですが、下記にイメージ画像を示します。




上記画像のようにハードリンクと元ファイルは同じデータ「A」を参照するのですが、コピーファイルはデータ内容が同じだとしても別のデータ「A’」を参照しているという形になります。

大きな違いとしてはハードリンクを作成してもストレージの空き容量は減りませんが、コピーを作成するとストレージの空き容量が減ります。

以上がハードリンク及びシンボリックリンクについての説明です。

次にlnコマンドの書式及びオプションを下記に示します。(「-s」オプションをつけない場合はハードリンクを作成します)


ln [オプション] リンク元ファイル名 リンク先ファイル名


オプション一覧

-s・・・シンボリックリンク作成

-d・・・ディレクトリに対してハードリンクを作成する(スーパーユーザーのみ)

-f・・・対象ファイルが存在する時に削除する

-v・・・リンク作成時にファイル名を表示する

-P・・・シンボリックリンク先のディレクトリを表示する


試しに仮想環境にてシンボリックリンクファイル、ハードリンクファイル、コピーファイルを作成してみようと思います。

元ファイル名は「test-original」として、下記画像のコマンドを入力し、各ファイルを作成します。



そして、「ls -li」コマンドにて各ファイルの詳細情報を表示します。(-iオプションでiノード番号を表示)




上記画像を見ると、元ファイルとハードリンクは同じiノード番号になっていますが、コピーファイルは別のiノード番号になっています。

そして、「test-symlink」ファイルは左から2番目にあるパーミッション情報の先頭が「l」になっていて、シンボリックリンクであることが分かります。

また、どこがリンク元なのかも表示されています。

今回はLinux上で作成するハードリンクやシンボリックリンクについて説明させていただきました。

参考資料
・沓名亮典(2017)『Linux ステップアップラーニング』株式会社技術評論社
ln コマンド | Linux | 使い方 | Linuxエンジニアの備忘Log (sooota.com)
コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3