キーワード:NTFS 解除

いきなりですが、タイトルの意味がよくわかりませんよね?

 

PC上にあるファイルですが、これを削除したらどうなるでしょうか?

ゴミ箱にファイルが移動すると思います。

また、Shiftを押したまま削除するとゴミ箱に行かずにダイレクトに消えます。

 

さて、タイトルの意味ですが、同じデータに複数のファイル名・・・

どういうことでしょう?

 

次のように2つのテキストファイルがあります。

hl001
まずこのうち「ファイル1」を開いてみます。

このように書いてあります。

hl002
まぁ、まんまの内容ですね。

 

では、次に「ファイル2」を開いてみます。

hl003
おっと、これも中身は「ファイル1」と同じようになっています。

 

これは「ファイル1」じゃないじゃん!ということで、

このように内容を変更して保存してやりました。

hl004
これで間違いないですね。

 

じゃあ今度はまた「ファイル1」を開いて確認してみましょう。

hl005
!?

あれ???何でこっちも同じになっているの!????

 

何を隠そう、この2つのファイルは同じファイルなのです。

 

同じファイルとは言ってもファイルは別の名前できちんと2つあるのに何で!?

実はハードリンクという機能を使っています。

 

カンのいい人は「あー、ショートカットみたいだな」と思った人もいるかもしれません。

確かにショートカットの拡張子はlnkですし、リンクとも言えますがハードリンクは

どちらもホンモノのファイル名として扱われる点が違います。

 

まずファイルについてですが、ファイルにはファイル名があり、

それが各フォルダに格納されていますね?

目的のファイルを開く場合はそのフォルダを開いてその中にある該当するファイルを

ファイル名で探して開く事ができます。

 

ここで話を削除の場合に戻します。

ファイルを削除した場合、どうなるでしょうか?

削除したファイル名のファイルがそのフォルダから消えてなくなりますね。(当然ですがw)

これはどうなったかというと、そのファイル名が指し示すデータ場所へのリンクを切ります。

つまり上の例でいくと実際に「ファイル1の中身!」と書かれたデータの場所への情報を

削除するため、そのファイルは「消えた」という事になります。

そして、どこからもファイル名でリンクされていないデータの場所は未使用(空き)領域となり、

新しくデータを書き込む場合なんかに空き領域として使われて新しいデータで上書きされます。

 

通常、データの実体は1つ以上のファイル名でリンクされています。

ファイルの削除は、このデータの実体へのリンクを全て切り離します。

 

では、↑で紹介したファイルの場合はどうでしょうか?

データの実体へのリンクは「ファイル1.txt」と「ファイル2.txt」という2つのファイル名(リンク)があります。

この片方を削除したらどうなるでしょう?

実際にはまだ消えません。

何故なら、もう1つのファイル名(リンク)が残っているからです。

2つとも消して、はじめて「削除」されるわけです。

 

普段使う場合、ファイル名はデータの実体に対して1つだけの場合が多いでしょう。

「ファイルを消す」という場合、そのファイル名のファイルを消すだけでいいですからね。

これはリンクがそのファイル名の1つだけなのでそれを消すことによって空き容量が増えます。

 

だから何?って感じですが、

これを使うと誤ってファイルを消してしまうリスクが少しだけ減ると思いませんか?

 

例えば、Dドライブにgazouというフォルダがあり、そこに写真等のファイルが入っていたとします。

その中のファイルのハードリンクをDドライブの別のフォルダ(例:hardgazou)に作っておいた場合、

誤ってgazouのフォルダからファイルを消してしまってもまだ別フォルダから

そのファイルへのリンクが残っているため消える事はありません。

ただし、ファイルが指し示すデータの実体は同じなのでその実体のデータが壊れたら

どちらのリンクからも壊れたデータしか取り出せなくなります。

なのでバックアップにはなりません

 

さて、このハードリンクですが、実はWindows2000ぐらいから作る事はできました。

ただし、ファイルシステムはNTFSで、同じドライブ(パーティション)内にしかハードリンクは作れない

等のいくつかの制約があります。

 

で、作り方なんですが、コマンドプロンプトを開きます(Windows7とかの場合は「管理者として実行」してください)

開いたら次のコマンドで作成します。

fsutil hardlink create 新しいファイル名 既存のファイル名

とりあえず、コマンドプロンプトでfsutil hardlink createと入力して、ッターン!とEnterを押してみてくださいw

使い方が出てきます。

 

ここではWindowsという前提で話を進めましたが、Linuxで使われているext3、ext4なんかのファイルシステムでも

ハードリンクは作れます。

 

まぁ、誤消去を防止するんならファイルをバックアップ取っとけばいいんで

あんまり需要ないかな?

でも、覚えておくと何かと便利な場合があるかもしれませんw

 

似た機能にディレクトリジャンクションとかシンボリックリンクなんかもあります。

シンボリックリンクはハードリンクよりショートカットに近い感じですかね。

 

まぁ、気になった場合はググってみると良いと思いますよw

[ 1 ]      1件中 1-1件