cp -lオプションの使い方を完全ガイド!初心者でもわかるハードリンクの仕組みと使い方
生徒
「Linuxでファイルをコピーすると、同じデータが2つになるんですよね?」
先生
「うん、普通のcpコマンドだとそうなるね。でも-lオプションを使えば、ハードリンクという方法で、見た目はコピーだけど中身は同じファイルにできるよ。」
生徒
「えっ、それってどういうことですか?容量も減らせるんですか?」
先生
「その通り!ハードリンクならディスク容量を節約できるんだ。じゃあ詳しく説明するね。」
1. cpコマンドとは?
cpコマンドは、Linuxでファイルやディレクトリをコピーするための基本コマンドです。コピーとは、元のファイルと同じ内容を持つ新しいファイルを作ることで、2つは別々に管理されます。
基本的なコピーは以下のように行います。
cp original.txt copy.txt
この操作では、original.txtとcopy.txtは完全に別のファイルとして存在します。
2. cp -lオプションとは?(ハードリンクの作成)
cp -lオプションは、通常のコピーではなくハードリンクを作成するためのオプションです。
ハードリンクとは、1つの実体ファイルに複数の名前(パス)をつける技術です。見た目は2つのファイルでも、中身は1つだけという仕組みです。
使用例はこちら:
cp -l original.txt linked.txt
このコマンドでは、linked.txtが作られますが、実体はoriginal.txtと共有しています。
3. ハードリンクのしくみを図でイメージ
例えるなら、ハードリンクは1つの本(データ)に2つの表紙(名前)を付けたようなものです。表紙は違っても、開いて読む中身は同じ本です。
どちらかのファイルを編集すると、もう片方にも反映されます。なぜなら、実体が1つだからです。
4. ハードリンクと通常のコピーの違い
| 比較項目 | 通常コピー | ハードリンク |
|---|---|---|
| データの実体 | 2つ存在 | 1つだけ |
| 保存容量 | 2倍になる | 変わらない |
| 編集の影響 | 別々の内容 | 片方を変えるともう片方も変わる |
5. ハードリンクの確認方法(ls -iコマンド)
ハードリンクが本当にできているか確認するには、ls -iコマンドでinode番号を調べます。inode(アイノード)とは、Linuxがファイルの中身を管理する内部的な番号です。
ls -i original.txt linked.txt
655392 original.txt
655392 linked.txt
このように、2つのファイルが同じinode番号を持っていれば、ハードリンクです。
6. -lオプションを使うときの注意点
- 異なるファイルシステム間では使えない(例:別のディスクやUSB)
- ディレクトリには使用できない(root権限で特別な設定を除く)
- ハードリンクを削除しても中身は残る(最後のリンクが消えるまでデータは消えない)
ハードリンクは強力な機能ですが、ファイル構造をしっかり理解してから使いましょう。
7. ハードリンクとシンボリックリンクの違い
似た名前でシンボリックリンク(symlink)というものがありますが、ハードリンクとは異なります。
| 種類 | 特徴 | 使い方 |
|---|---|---|
| ハードリンク | 実体を共有。中身は完全に同じ | cp -lやln |
| シンボリックリンク | 元のファイルを参照するショートカットのようなもの | ln -s |
初心者にはcp -lの方が直感的に使いやすく、コピー代替として使える点がポイントです。