Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

参考

opengl-8080
ただのSE。Java好き。
tis
創業40年超のSIerです。
https://www.tis.co.jp/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした