2015.01.16: 引用箇所の解釈を間違えていたようです。指摘を頂き、修正しました。
昨年10月に書いたハードリンクとWindows7のデスクトップ移動の小技にてWindowsのハードリンクに関する非常にありがたいコメントを頂きました。
上記リンクで紹介した方法を使うと、OSに不具合が発生する場合がありそうです。
当方のWindows7が現在無事作動しているのは、「ラッキーだった」としか言い様がありません。。。
ハードリンクに関して分かり易いサイト
紹介して頂いたサイトです
ファイルへの別名を割り当てるハードリンクを作成する - @IT
上記サイトからハードリンクについて抜粋
- ハードリンクを行ったファイルは、異なるファイル名でも同じファイルのデータにアクセス
- (Windowsの)ハードリンクは
- 1つのコマンドに2つの名前を付けたり、
複数のプロジェクトでファイルを共有したりできる。 - ファイルをコピーしてデータを共有するのとは違い、
常に同じ実体を指している。 - 別名で起動しても常に同じものが実行される
- 多くの名前でファイルを共有してもディスク領域を圧迫することがない。
- 1つのコマンドに2つの名前を付けたり、
- Windowsにハードリンクが実装されたのはXPから(正確にはNT3.1から)
Windowsのハードリンクを利用する場合の注意
- ハードリンクが利用できるのはNTFSボリュームのみ。
FATボリューム上にはハードリンクは作成できない。 - ハードリンクはファイルに対してのみ有効。
フォルダ(ディレクトリ)に対してはハードリンクは作成できない。 - ハードリンクは、同一ボリューム内のファイルに対してのみ作成できる。
別ボリュームや別サーバの別ボリューム上のファイルへのハードリンクは作成できない(これはUNIXも同様)。 - あるファイルに対して、いくつのハードリンクが作成されているかを知るコマンドはない。
(UNIXの場合はlsコマンドでリンク・カウント数を表示できる)
また、どれが最初に作成された実体を持つファイルで、どれが後から作成されたハードリンクかを区別できない。 - ハードリンクを作成するにはコマンド・プロンプト上で作業する必要がある。
エクスプローラでは操作できない。
赤字部分が、以前紹介した時に決定的に欠落していた部分。
そして私が知らないまま書いていた部分です。
該当記事(ハードリンクとWindows7のデスクトップ移動の小技)のダメダメな部分
- フォルダごと移動させようとしている所
- 別ドライブに移動させようとしている所
- エクスプローラー上から移動させようとしている所
私のPC環境で行った分については、一応問題なく作動しているので、全くダメと言う訳では無さそうですが、以下の事に気をつけなければ、OSに致命的な不具合が発生しそうです
気をつける部分
- HDDはNTFSでフォーマットしてある事
- ファイルの移動は同じボリューム内で行う。
- 同じ物理HDDドライブであること
- 同じHDDドライブの別パーティションでも
- 「コンピューターの管理」>「ディスクの管理」で、「シンプルボリューム」で切ったパーティションではダメかもしれない。
- 経験上、コマンドプロンプトからDISKPARTで作成した拡張パーティションへの移動なら大丈夫っぽい。 (サイト内参考ページ:Windows7 のHDD管理方法(diskpartでプライマリパーティション1個にする))
- 別パーティションでも、ドライブ直下に移動させると不具合が発生するっぽい。
(ドライブ内にフォルダ作成、その中に移動させる) - ハードリンクはあくまでもファイルに対し行うもの。
マイドキュメントやピクチャフォルダなどを無理矢理移動させるのは邪道技
まだ良く解らない所
ハードリンクは、同一ボリューム内のファイルに対してのみ有効なようだけど、当方ではデスクトップフォルダ、マイドキュメントフォルダなどが別ドライブ(同じ物理ドライブ内)でキチンと作動しています。
やっぱハードリンクとは別の技術で繋がっているのかな・・・?
Wikipediaを読むとファイルに別名をつける機能としてのハードリンクは主にソフトリンク(UNIXではシンボリックリンク)が実装されていなかった時代のUNIXで用いられた。最近ではNTFSやHFS+にも実装されており、今日利用されている多くのオペレーティングシステムに備わっているが、ファイルに別名をつける目的には、ボリューム間でもリンクを作ることができ、管理も簡単なソフトリンクを用いることが多い。
ハードリンク - Wikipedia(一部抜粋)
と、ボリューム間でもリンクが可能な技術があるように読める。
※「ボリューム間でもリンクを作ることができる」のは、ソフトリンク/シンボリックリンク。
上記の引用文に対し、コメント欄で補足を頂きました
(ハードリンクは)
主にソフトリンク/シンボリックリンクが実装されていなかった時代のUNIXで用いられた。
今日利用されている多くのオペレーティングシステムに(もハードリンク機能は)備わっている
が(しかし)、
(現在ではソフトリンク/シンボリックリンクも実装されているので、単に)ファイルに別名をつける目的ならば、
(ボリューム間でもリンクを作ることができ、管理も簡単な)ソフトリンクを用いることが多い。
(= 敢えて制限の多いハードリンクを使わなければいけない場面は少ない)
色々なWindowsの資料を読むと1つの物理HDDを複数のパーティションに切った場合でも別ボリュームとして管理しているように読める(そしてコマンドプロンプトのcdコマンドなどはこのボリュームを跨げない)。
私が混乱していたのは、「ハードリンク」と「ソフトリンク/シンボリックリンク」の区別ができていない事が大きな原因だったようです(^_^;
追記終わり
私はまだこの「ハードリンク」・「ボリューム」共に概念が良く分かっていないようです(^_^;
この辺りの知識、私は全然ダメダメの模様。
現在私のPCが無事動いているのは、運が良かっただけかもしれません。
おまけ
コメ欄にてGraniさんという方にGUI上でハードリンクを操作するツールを教えて頂きました。ありがとうございます。
Link Shell Extension
▲英語サイトですが、図解が多いので感覚的に操作できそうなのがGoodです。
ダウンロードファイルは、ページの一番下を見てOS別にキチンと取捨てしないと上手く作動しないかも