未分類

リンクファイル

未分類

2016.09.21

リンクファイル

リンクファイルに関する授業を行っていた時に出てきた疑問。
色々と試して解決してみました。

まず、ハードリンクとシンボリックリンクの違いを簡単に説明します。

ハードリンクはiノード番号を共有する事で実現するリンクです。
一つの実体を複数の名前を付けて管理をするイメージ。
iノードで共有しているので、別パーティションにまたがって作成する事は出来ません。

本体を削除してもリンクファイルとinode(ファイルの実体)が紐付けされているのでエラーは発生しません。

シンボリックリンクはリンクファイルが本体のある場所を参照する仕組みです。
iノードで共有している訳ではないので、別パーティションに跨って作成する事が出来ます。
シンボリックリンクの場合は元ファイルを削除してしまうと
リンクファイルの参照先がなくなってしまうので、エラーが発生します。 

さて、それでは出てきた疑問点ですが

授業でリンクの仕組みの説明をしている中で
lsコマンドのプログラムファイルをコピーしてきて、それのハードリンクを作成してみる・・・

ということをやっていた時。

本体のファイルとリンクファイルの二つを ls -lしたら、ファイルサイズがどちらも表示されました。
合計のサイズもファイル二つ分の容量になっています。 
これって、実際に二つのファイル分の容量が増加してるって事??
各ディレクトリの使用量を確認する事が出来るduコマンドで確認してみました。

まずは、プログラムファイルをコピーしてくる前の状態。

ブログ用0921

その後、/binディレクトリからlsのプログラムファイルをコピーしてきます。


ブログ用0921_02

容量はこちら。ファイル分が増えてますね。

そしてその後、このプログラムファイルを元にハードリンクを作成します。

ブログ用0921_03

ls -lしてみると、2つのファイルとも、容量が表示されています。

duコマンドで確認してみた所、こちら

ブログ用0921_04

容量は増えていませんね。

まぁ、リンクファイルの仕組みを考えると、容量は増えるハズ無いんですが、
lsコマンドで確認してみると、『おや?』っと思ってしまう部分があったので確認してみました。

『このinode番号のファイルの容量はコレですよ!』と表示されていると理解すれば納得出来ますね。

ブログ用0921_05

ls -lコマンドで表示される合計容量は、本体とリンクファイルの両方が足された数が表示されますが、
duコマンドで確認してみると一つ分の容量のみが確認できました。

 

SHARE

最新記事

無料相談する

INTERNOUS,inc. All rights reserved.