Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
80
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

Organization

Windowsでハードリンクやシンボリックリンクを作成する

Windows でもハードリンクやシンボリックリンクが作れることを初めて知ったのでメモ。

それぞれの対象

ハードリンク ジャンクション シンボリックリンク
対象 ファイル フォルダ ファイル+フォルダ

ハードリンク

書式

mklink /h <リンク> <ターゲット>

>dir /b
hoge.txt

>type hoge.txt
hoge

>mklink /h hard_link.txt hoge.txt
hard_link.txt <<===>> hoge.txt のハードリンクが作成されました

>dir /b
hard_link.txt
hoge.txt

>type hard_link.txt
hoge

>echo aaa >> hoge.txt

>type hard_link.txt
hoge
aaa

>mkdir dir & move hoge.txt dir
        1 個のファイルを移動しました。

>tree /f
hard_link.txt
│
└─dir
        hoge.txt

>type hard_link.txt
hoge
aaa

>rmdir /s /q dir

>dir /b
hard_link.txt

>type hard_link.txt
hoge
aaa

最初に存在したファイル(hoge.txt)が移動されたり削除されたりしても、ハードリンクはターゲットの実体を指し続ける。

ジャンクション

書式

mklink /j <リンク> <ターゲット>

>tree /f
└─dir
        hoge.txt

>mklink /j junction_dir dir
junction_dir <<===>> dir のジャンクションが作成されました

>tree /f
├─dir
│      hoge.txt
│
└─junction_dir
        hoge.txt

>echo fuga.txt > junction_dir\fuga.txt

>tree /f
├─dir
│      fuga.txt
│      hoge.txt
│
└─junction_dir
        fuga.txt
        hoge.txt

>rmdir /s /q dir

>tree /f
└─junction_dir

>cd junction_dir
指定されたファイルが見つかりません。

オリジナルのフォルダ(dir)が削除されると、ジャンクションは残るがアクセスできなくなる。

シンボリックリンク

作成には 管理者権限が必要

書式

ファイルの場合
mklink <リンク> <ターゲット>
フォルダの場合
mklink /d <リンク> <ターゲット>

>dir /b
hoge.txt

>type hoge.txt
hoge

>mklink symbolic_link.txt hoge.txt
symbolic_link.txt <<===>> hoge.txt のシンボリック リンクが作成されました

>type symbolic_link.txt
hoge

>echo sss >> symbolic_link.txt

>type hoge.txt
hoge
sss

>mkdir dir & move hoge.txt dir
        1 個のファイルを移動しました。

>tree /f
symbolic_link.txt
│
└─dir
        hoge.txt

>type symbolic_link.txt
指定されたファイルが見つかりません。

>echo fuga > hoge.txt & tree /f
hoge.txt
│  symbolic_link.txt
│
└─dir
        hoge.txt

>type symbolic_link.txt
fuga

>move symbolic_link.txt dir & tree /f
        1 個のファイルを移動しました。
│  hoge.txt
│
└─dir
        hoge.txt
        symbolic_link.txt

>type dir\symbolic_link.txt
hoge
sss

>del dir\hoge.txt & tree /f
hoge.txt
│
└─dir
       symbolic_link.txt

>type dir\symbolic_link.txt
指定されたファイルが見つかりません。
  • シンボリックリンクを作成したときに指定したパスにファイルがなくなると、参照できなくなる。
  • 相対パス指定で作成した場合、シンボリックリンクの場所から相対パスで指定した場所にあるファイルが参照される(もともとあったファイルと別のファイルでも問題ない)。
  • 絶対パスでも作成可能。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
80
Help us understand the problem. What are the problem?