シンボリックリンクに対して、
使い道がないといわれがちなハードリンク
それが思いのほか便利だったので、
(超というと大げさだけど)
その使い道を紹介してみる
gitのあるディレクトリ内にハードリンクを作成することで、git管理する
- gitがないディレクトリのファイルを、git管理したいとき
- プロジェクトのリポジトリをローカルにクローンしているしていて、プロジェクトのcommit履歴を汚したくないが、個人的に細かな変更履歴を残しておきたいとき
シンボリックリンクとの比較
ハードリンクのメリット
- ファイルを移動させたときや、親ディレクトリの名前を変更してもリンクが切れない
- リンク元のファイルを削除しても、リンク先のファイルをが削除されない(そもそもどちらがリンク元かリンク先なのかの区別はない)
ハードリンクのデメリット
- ファイルシステムをまたいだハードリンクは作れない
- ディレクトリのハードリンクは作れない
ハードリンクの作り方1
Linuxの場合
ln [リンク元ファイルパス] [リンク先ディレクトリパス]
windowsの場合
powershellでは
New-Item -ItemType HardLink -Path [リンク元ファイルパス] -Target [リンク先ファイルパス]
コマンドプロンプトでは
mklink /h [リンク元ファイルパス] [リンク先ファイルパス]
または
fsutil hardlink create [リンク元ファイルパス] [リンク先ファイルパス]
エクスプローラーで使いたい場合
リンク作成シェル拡張というツールを使えばできる。
「リンク作成シェル拡張」異なるパスで同じファイルやフォルダーを表すためのツール - 窓の杜
参考
シンボリックリンクとハードリンクの違いって? #Linux - Qiita
Windowsのハードリンクとジャンクションとシンボリックリンクについて #PowerShell - Qiita
【Windows File System】Windowsでハードリンクやシンボリックリンクを作る | dotいがの快適インターネット
-
細かなオプションとかはこれを参照
ln コマンド - IBM Documentation ↩