0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux リンク

Last updated at Posted at 2025-01-29

$ ln

link

シンボリックリンクやハードリンクを作成する。

Linux のリンクは、Windows では ショートカット、MacOS では エイリアス と呼ばれる。

-s オプションをつけない場合、ハードリンクを作成することになる。

ハードリンクを作成
$ ln リンク元 ハードリンク
シンボリックリンクを作成
$ ln -s リンク元 ハードリンク

ハードリンク

データ本体への参照を名前が異なる複数のファイルが共有すること(Linux のファイルシステムでは、ファイルは データ本体 と inode で構成される)。

ハードリンクを作成したファイルは元のファイルと同じ inode を持つため、ファイルシステム上で完全に等価関係にある。

ハードリンクのリンク元、リンク先ファイルは完全に等価。
リンク元、リンク先は区別できない。

ハードリンクは同じファイルシステム内でしか作成できない。ファイルシステム、マウントポイント、パーティションをまたいだファイル間では作成できない。

ディレクトリに対しても作成できない。

ハードリンクは $ ln コマンドを使用して作成する。

ハードリンクを作成する
$ ln リンク元ファイル名 リンクファイル名 # リンクファイルは存在しないことが前提

ファイルの削除

ハードリンクが作成されたファイルの データ本体 は、リンク数が 0 になるまでは完全には削除されない。

$ rm コマンドを実行した時、内部ではそのファイル名とinodeの紐付けが解除され、これによりリンク数が 1 減少している。さらにリンク数が 0 になった場合にのみ、ファイルのデータ本体とinodeが初めて削除(解放)されている。

ファイルのデータ本体はリンク数が 0 になるまで削除されない

シンボリックリンク

リンク元ファイルへのパスを保持する特殊なファイル。

ハードリンク と異なり、異なるネットワーク、ファイルシステム、パーティション間でも作成できる。

シンボリックリンクは元ファイルのデータ本体ではなく、パスを参照するだけなので、元ファイルが削除されるとリンクは壊れてしまう。

シンボリックリンクを作成する
$ ln -s リンク元ファイル名 リンクファイル名 # リンクファイルは存在しないことが前提

ディレクトリに対しても作成することができる。

ディレクトリにシンボリックリンクを作成する
$ ls -s リンク元ディレクトリ名 リンクディレクトリ名

シンボリックリンクは ls -l コマンド実行時に -> で表示される。

シンボリックリンクが設定されたf
$ ls -l
> lrwxrwxrwx 1 kei kei 5 Jan 30 11:33 file1 -> file1

パーミッションrwxrwxrwx と表示されるが、実際には リンク元のパーミッションが適用される

シンボリックリンクのパーミッションは、リンク元のパーミッションが適用される。

リンクのコピー

ハードリンク、シンボリックリンクをファイルコピーした場合、デフォルトではリンク元ファイル(ファイルの実体)がコピーされる。

ファイルの実体がコピーされる
$ cp リンク コピー先ファイル

ファイルの実体ではなくリンク自体をコピーしたい場合、-d オプションを使用する。

リンク自体をコピーする
$ cp -d リンク コピー先ファイル

比較

特徴 ハードリンク シンボリックリンク
参照方式 同じデータ本体を参照 パスを参照
inode 番号 同じ 異なる
リンク元ファイル削除時の挙動 リンクが残る限りデータにアクセス可能 リンク切れになる
制約 同じファイルシステム内でのみ作成可能 異なるファイルシステムでも作成可能
ディレクトリのリンク 不可 可能
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?