
20年間エンジニアとして働いた後、フリーランスを経て現在は1人社長として活動しているユウイチです。
プログラミング講師やIT教育を中心に発信しながら、趣味でゲーム開発やシナリオ作成にも挑戦しています。
「創造と教育を通じて、自分らしく生きたい人の“自由な一歩”を支援する」――そんな想いを込めて、このブログを書いています。
今回は基礎技術の紹介です。
Linuxで使うハードリンクとシンボリックリンクの違いについて、よくわからん!という方がけっこういらっしゃる気がします。
特にWindowsに慣れている方で「リンク=ショートカット」と認識しているとこんがらがるのではないかと思います。
ということで今回は、ハードリンクとシンボリックリンクの違いについて説明します。
ファイル作成時の状態
リンクを作成する元となるファイルですが、今回は「私はファイル1です」という文字を記載した「file1.txt」というテキストファイルを例にします。このfile1.txtを作成すると、以下のような状態になります。

少しわかりにくいかもしれませんが、「私はファイル1です」という内容はハードディスクなどのデータ領域に格納されます。そして、格納する場所には番地がついていて、今回の例では104番地に保存されたことにします。(メモリ管理はもっと複雑ですが、わかりやすくするためこうしております)
このとき、file1.txtは「おれの中身は104番地だな」と自分に書かれているデータがどこに保存されているかわかるようになっています。なので、「おれを見たいというやつがいれば104番地のデータを見せてやればいいんだな」となり、file1.txtにアクセスがあると、104番地のデータを見せることになります。
参考
ファイルの内容が実際に書かれているデータ領域の場所を示す番地をポインタと言います。この他にもファイルのアクセス権限やサイズなどをまとめて管理していて、これらの情報を「メタ情報」と言います。Linuxではこの情報をiノード番号という番号を用いて実際のデータ(テキストファイルに書かれた内容など)とは分けて管理しています。
ハードリンク
それではまずハードリンクからなのですが、言ってしまうとこいつがややこしくしている元凶なのです。どういうことかというと、「リンク」という名前がついているくせに元のファイルをまったく参照しないのです。リンク詐欺です笑
「リンク」って、あたかも元のファイルを参照するようなイメージを持たせるのですが、それを見事に裏切ってくれるのがこのハードリンクなのです。
では、実際にハードリンクを作成したときに何が起こっているかというと、ハードリンクに元ファイルの内容が格納されているデータ領域の番地情報が渡されるのです。今回の例では「ファイルの中身は104番地だよ」という情報が渡されます。つまり、「file1.txtへのハードリンク」にアクセスすると、直接データ領域の104番地を見に行ってしまうのです。イメージ的にはこんな感じです。

ほんとにリンクっぽくないのですが、これがハードリンクとなります。ちなみに、この状態でfile1.txtを削除しても、「file1.txtへのハードリンク」からファイルの中身が見えてしまうのです。なぜなら、こんな状態になっているから。

file1.txtを削除しても104番地の「私はファイル1です」というデータは消えないのです。これは「参照される箇所が残っている番地のデータは消さない」というLinuxの仕様によるものです。今回の例だと「file1.txtは消えたけど、file1.txtのハードリンクが104番地を参照してるので104番地のデータは消さないよ」ということになります。
元のデータが消えているのにリンクだけで生き残れる。ハードリンクってほんとにほんとにリンクっぽくないやつなのです。。。
参考
先ほど、メタ情報はiノード番号で管理すると言いましたが、「file1.txt」と「file1.txtへのハードリンク」が使うiノード番号はまったく同じです。なので、「file1.txt」と「file1.txtへのハードリンク」はまったく同じふるまいをするわけです。
シンボリックリンク
次に、シンボリックリンクです。こいつは先ほどのハードリンクとはうってかわり、リンクっぽいやつになります。Windowsのショートカットのイメージそのままで大丈夫です。
実際にリンクと聞いてイメージする通りの動きになるのですが、シンボリックリンクを作成すると、「file1.txt」を見に行きます。そして、「file1.txt」が「おれの中身は104番地だよ」と教えてくれるので、その後に104番地を見に行くわけです。こんな感じです。

リンク元をしっかりと参照する。まさにリンクと聞いてイメージするそのままの動きをしてくれるわけです。当然ですが、リンク元の「file1.txt」を削除するとシンボリックリンクからも見れなくなります。ちなみに、このときは「file1.txt」を削除した時点で104番地を削除しているファイルやリンクもなくなるので、104番地のデータも消えることになります。

以上、今回はハードリンクとシンボリックリンクの違いについて説明してみました。
まとめ
同じ「リンク」という名がついていますが、ハードリンクとシンボリックリンクでのふるまいの違いを理解いただけましたでしょうか。
どっちがどっちだっけ?
ともし迷うことがあれば「ハードリンクはもはやリンクではない」と思い出していただければと思います笑
あと、説明はしなかったのですがハードリンクとシンボリックリンクの違いとして以下もあります。
ハードリンク:同じファイルシステムにしか作成できない
シンボリックリンク:異なるファイルシステムでも作成できる。
この記事はエンジニア経験の浅い方、もしくはこれからエンジニアを目指す方向けに書いてますのでこの違いについて触れませんでしたが、またファイルシステムについても書こうと思います。(ふるまいの違いを理解するだけならファイルシステムわかっていなくても大丈夫です)
また、Windowsではなじみのないハードリンクですが実はWindowsでも作成できます。ただ、作成する機会は滅多にないと思いますので特に説明はしませんでした。僕も作ったことないですし^^;
なので、Linuxを使用する上でこの違いを理解してもらっていれば大丈夫だと思います。
✅ ITキャリアを育てるコミュニティ「ITキャリアラボ」
未経験からIT業界に挑戦したい方、資格学習、プログラミング学習が続かない方、転職に不安がある方へ。
僕自身、未経験からエンジニアになり、フリーランス、そして起業へと進んできました。
だからこそ、同じように悩んでいる人たちに寄り添い、サポートしたいという想いで、
LINE公式アカウント「ITキャリアラボ」 を開設しました。
🔹 こんな方におすすめです!
こんな方におすすめ
- IT業界へ未経験からチャレンジしたい方
- ITパスポート・基本情報技術者などの資格勉強中の方
- プログラミング学習でつまずいている方
- 転職・キャリアチェンジを検討中の方
- モチベーションを保つために仲間がほしい方
- 将来的な独立に興味がある方
📌参加は無料・匿名OK・LINEだけで完結!
こちらで詳しく紹介してますので、まずは気軽にのぞいてみてくださいね👇
ITキャリアラボ
-

ITキャリアを育てるコミュニティ「ITキャリアラボ」|自分らしい働き方を目指す人へ
20年間エンジニアとして働いた後、フリーランスを経て現在は1人社長として活動しているユウイチです。 プログラミング講師やIT教育を中心に発信しながら、趣味でゲーム開発やシナリオ作成にも挑戦しています。 ...
続きを見る
✅ 自由になるための一つの選択肢『フリーランス』
過去の僕と同じように、会社に以下のような不満がある
不満
お金のために働いてるけど、給料が上がらない
ホントにやりたいのはこんな仕事じゃない
自分の時間がない
人間関係に疲れた
という方はフリーランスを目指すのも一つの手です。
僕は独立後、開発と講師業をメインにしていますが、安定して高単価の案件を続けられているのはフリーランスエージェントのおかげです。
フリーランスエージェントさんに話を聞くことで自分の可能性を知ることもができますし、自分の時間が増えるフル在宅の案件でしかも高単価みたいな案件や、こんなのもあるのか!と驚くような案件を紹介してもらえることもあります。
「フリーランスになればすぐに理想の自由な生活が実現できる」
というわけではないのですが、自由を目指されている方は、会社員時代よりも確実にそこに近づくことはできると思います。
以下におすすめフリーエージェントさんを紹介してるので、ぜひ参考にしてみてくださいね^^
こちらもCHECK
-

【2026年版】フリーランスエージェント比較|目的別おすすめ5社と実体験レビュー
人生を自由に楽しむために会社員を辞め、フリーランスを経て法人化し、現在は一人社長をしています。ユウイチです。 「フリーランスになりたいけど、どのエージェントを使えばいいか分からない…」 「会社を辞める ...
続きを見る
僕と価値観が似ているという方は、自由を目指していきましょう!
それではまた!