Windows のシンボリックリンクとハードリンクの違い

2019/04/03

#Windows10 PowerShell コマンドライン

Windows にはシンボリックリンクとハードリンクの機能がありますが、違いや特徴が解りづらく、あまり利用されていないのではないかと思います。
その違いと特徴について考察します。

シンボリックリンク

エクスプローラでショートカットファイルを作るのに似ています。
仕組みは概ね Linux と同様ですが、作成方法には違いがあります。

特徴

  • シンボリックリンクは、元のファイルの(実体そのものではなく)パスを指す。
  • パスを指す為、他のドライブや、ネットワーク越しでもリンクできる。
  • シンボリックリンクを削除しても、元のファイルには何も影響しない(そのまま残る)。
  • 元のファイルを削除した場合、そのファイルへのシンボリックリンクは残るが、既に存在しないパスを指しておりアクセスできなくなる。
  • ショートカットファイルのように「作業フォルダ」の情報は無い為、実行ファイルはリンク先のフォルダではなく、実行したフォルダ側で起動する。
  • dir コマンドやエクスプローラで symlink であることが確認できる。
  • 作成には管理者権限が必要。

作成と削除

シンボリックリンクを作成・削除するときは、リンク先がフォルダかファイルかで方法が異なります。

ファイルは mklink で作成、del で削除。
フォルダは mklink /d で作成、rmdir で削除します。

ハードリンク

ハードリンクは Linux のそれと同様の動作をします。
つまり同一のドライブ内で、元のファイル名と同様にファイルを直接指す別名を付けます。

特徴

  • ハードリンクで付けた名前は、元のファイルの名前と全く同じように扱える。
  • 1つのファイル内容に対して、複数の名前でリンクを張ると解釈できる。
  • 元のファイルを削除しても、ハードリンクが 1つでも残っていればファイル内容(への参照)は残り、やはり元のファイルと同じようにアクセスできる。
  • 言い換えれば、ハードリンクによる参照が 1つでも残っている限りファイルは削除されない。
  • Windows10 に Linux サブシステムを入れて ls -l してみると、Linux と同様にファイルの参照数が増えることが確認できる。
  • 作成は一般ユーザ権限で可能。

作成と削除

mklink /h で作成、del で削除します。
リンク先はファイルのみで、フォルダのハードリンクは作れません。

対応環境

ハードリンクは Windows 2000 以降、シンボリックリンクは Vista 以降で利用できます。
対応ファイルシステムは NTFS です。

PowerShell で実行する際はコマンド名を cmd /c mklink にする必要があります。
コマンドプロンプト(cmd.exe)からは直接実行できます。

関連サイト

サイト内を検索

自己紹介

自分の写真
スマートフォン(Android)、IT、PC、プログラミング等の役立つ(かもしれない)情報や気になる話題を書いています。

QooQ