《Linux》ハードリンクとシンボリックリンクとは何か?わかりやすく解説

オペレーションシステム

ハードリンク

iノードについて

ファイルをハードディスクに保存するとそのファイルに対応する固有のiノードと呼ばれるデータが登録されます。このiノードには以下の情報が含まれています。

・iノードの固有ID

・ユーザーID

・グループID

・パーミッション

・ファイルサイズ

・ファイル作成時間

・更新日時

・ディスク上の物理的な場所

ハードリンクを作ってみる

ハードリンクを作ると、複数のファイルからファイルの元となるデータ(実体)を操作できるようになります。これ、初めて聞くと何を言っているのかさっぱりわかりませんよね。なのでまずは実際にハードリンクを作ってみましょう。まず以下のような適当なtxtファイルを用意します。

このtest.txtlsコマンドに-liオプションをつけて表示すると以下のような表示になります。

1というのがリンク数です。このファイルはリンクを持っていません。仮にハードリンクが他に存在する場合その個数を足した数が表示されます。では次はlnコマンドでtest.txtのハードリンクを作ります。

先ほど同様にlsコマンドで表示すると

リンク数が1つ増えた状態でハードリンクが追加されていることが確認できます。今の状態は2つのファイルから1つのiノードを参照している状態、すなわち元のデータを参照できる状態になっています。ちなみにtest.link_hardのファイル内容もtest.txtの内容をコピーした状態になっています。

ファイルとiノードの関係

ハードリンクの特徴として複数のファイルに対して1つのiノードが紐付くことがあるという点です。以下の図で実体と表記されている部分はハードディスクに保存されているデータそのものを指しています。

シンボリックリンク

リンク元へのポインタを持つ

シンボリックリンクはリンク元のポインタを持ちます。シンボリックリンクを作成するとディスク上にリンク元のアドレスを指す実態が生成されます。

シンボリックリンクを作成する

先程と同様、適当なtest.txtファイルを用意します。

ln -s でシンボリックリンクを作成します。

lsコマンドで確認すると

となり、ハードリンクを作成後はリンク数が2になっていましたがシンボリックリンクではそれぞれ異なるiノードを持っているため各ファイルのリンク数は1になります。一応シンボリックリンクの内容も確認しておきましょう。

内容はハードリンクと同じですね。

筆者
筆者

以上でハードリンク、シンボリックリンクの解説を終わります。最後まで読んでくれて本当にありがとうございました!ちなみにLinuxのコマンド、機能を理解するために以下の参考書を読んでいるのですが非常に勉強になるのでおすすめです。


番外編:働くエンジニアにおすすめアイテム3撰

記事の内容とは別に、日々エンジニアの業務を行う上で役に立っているアイテムを紹介します。どれも実際に使って良いと思ったものだけ紹介していますのでその点はご安心ください。

目の保温マッサージ

毎日使っている目の保温マッサージ機です。使うと翌日の疲労感が全く違います。1日中PCと睨めっこの人は今すぐ購入することを強くお勧めします。

座っている時の負担を減らす

このサポート座布団を購入してからデスクワークの疲労が激減しました。価格も安く購入しやすいのでコスパ最強です。現在職場でも愛用しています。

自宅での作業効率をあげる椅子

ゲーミングチェアを購入して、自宅での作業効率が最大化しました。座った途端集中モードに入ります。家で作業する人は絶対に買っておきたいアイテムです。

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。スキルの高いエンジニアは極々当たり前にしっている知識だとおもいますが、そうでない方はエンジニアとして最低限知らないとまずい知識ですのでどこかで購入し、読むことをお勧めします。

タイトルとURLをコピーしました