すべてを

▼開く

閉じる▲

コピーの代わりにハードリンクを作成する

○ファイル「myfile1」のハードリンク「linkfile」を作成する

lsコマンドでコピーするファイルを見る
$ ls -li
 328176 drwxrwxr-x    2 masa users        4096  6月  2 18:13 dir1
 100159 -rw-rw-r--    1 masa users         529  5月  6 16:45 myfile1

cpコマンドで-lオプション、コピー元ファイルとハードリンクファイルを指定する
$ cp -l myfile1 linkfile

cpコマンドで-lオプションを指定し、ファイル「myfile1」と「linkfile」を指示すると、ハードリンクが作成される。

lsコマンドでコマンド実行結果を確認する
$ ls -li
 328176 drwxrwxr-x    2 masa users        4096  6月  2 18:13 dir1
 100159 -rw-rw-r--    2 masa users         529  5月  6 16:45 linkfile
 100159 -rw-rw-r--    2 masa users         529  5月  6 16:45 myfile1

i-ノードを見て判るように、「myfile1」と「linkfile」は同じi-ノードである。
作成されたハードリンクは、シンボリックリンクと違ってリンク元とリンク先の区別はない。どちらも同じファイルであるため、タイムスタンプも初めに存在していたファイルのままになる。通常のコピーのように、コピー時の時刻に変更されない。

ファイルにハードリンクを作成する

○「myfile1」のハードリンク「userfile1」を作成する

lsコマンドでリンクを作成するファイルを見る
$ ls -l
-rw-rw-r--    1 masa users         268  6月  3 21:48 myfile1

lnコマンドでリンク元ファイルとリンクファイルを指定する
$ ln myfile1 userfile1

lnコマンドでリンク元のファイル名「myfile1」、リンクファイル名「userfile1」を指定すると、ハードリンクが作成される。ハードリンクでは、ファイルの実体は一つなので、ファイルの情報(タイムスタンプ)などはリンク元とリンクファイルとは同じである。またリンクを実行したときにタイムスタンプが変更されたりすることは無い。

lsコマンドで実行結果を見る
$ ls -l
-rw-rw-r--    2 masa users         268  6月  3 21:48 myfile1
-rw-rw-r--    2 masa users         268  6月  3 21:48 userfile1

同じファイルへのハードリンクは複数作成することができる。また、作成したリンクファイルにリンク元とリンク先の区別はない。

ファイルシステム(/dev/sd0aなどのデバイス)をまたいだハードリンクは作成できない。