lisz-works

プログラミングと興味を貴方に

【Win】git管理不可下でもgit管理!シンボリックリンクの作り方

【スポンサーリンク】

シンボリックリンク

シンボリックリンクの使い方について説明します。

gitの管理ができない場所で、git管理したり
保存場所が変更できない場所で、別の場所にファイルの実体を置くことができます。

やり方

今回設定するパスは、コチラ。
サクラエディタの設定を、Dドライブに置く設定をします。

項目 パス
リンク(リンク元) C:\Users\userName\AppData\Roaming\sakura
ターゲット(リンク先) D:\Tool\Setting\sakura

まずはリンク元のフォルダを、削除または名称を変更します。

「D:\Tool\Setting」に「sakura」を作っておきます。

sakuraフォルダを作成

それではコマンドプロンプトを起動しましょう。
「Winキー+R」で、「ファイル名を指定して実行」で「cmd」と入力し、「OKボタン」を押すのが手っ取り早いです。

起動したらこのようなコマンドを実行します。

mklink /D C:\Users\userName\AppData\Roaming\sakura D:\Tool\Setting\sakura

実行するとこんな表示になります。

c:>mklink /D C:\Users\userName\AppData\Roaming\sakura D:\Tool\Setting\sakura
C:\Users\userName\AppData\Roaming\sakura <<===>> D:\Tool\Setting\sakura のシンボリック リンクが作成されました

すると、「C:\Users\userName\AppData\Roaming」に「sakura」というショートカットマークの付いたフォルダができますね。

作られたリンクフォルダ

コレを開いてみましょう。

「C:\Users\userName\AppData\Roaming\sakura」というパスになっています。

それでは「D:\Tool\Setting\sakura」を開いてみましょう。

Dドライブの方に、適当なファイルを作成してみてください。

すると、Cドライブ側にも同じファイルができませんか?

作ったファイルを2つのパスで見る

このように、パスはそれぞれ違うものでありながら、同じフォルダ(今回の場合、実態はDドライブ側)を見ていることになります。

一見するとショートカットに近いです。

しかし両方のフォルダ自体は存在しています。でも内容は同じものになっています。

ヘルプ内容

コマンドプロンプトのヘルプ内容です。
ご参考までに。

mklink
シンボリック リンクを作成します。

MKLINK [[/D] | [/H] | [/J]] リンク ターゲット

/D     ディレクトリのシンボリック リンクを作成します。既定では、
      ファイルのシンボリック リンクが作成されます。
/H     シンボリック リンクではなく、ハード リンクを作成します。
/J     ディレクトリ ジャンクションを作成します。
リンク   新しいシンボリック リンク名を指定します。
ターゲット 新しいリンクが参照するパス (相対または絶対)
      を指定します。

コレをするとどうなるの?

コレを行うことで何ができるかというと

このアプリの保存先、ココのフォルダ固定だけど、こっちにファイル保存したいな……

というときや

ここアクセス禁止だからgit置けないけど、gitに保存したい……

なんてときに効果を発揮します。

前者はシステムとデータで、ドライブを分けている方なんかは効果覿面ですね。

「データはDドライブなのに、Cドライブに勝手に保存される……」

なんてとき、シンボリックリンクを貼ってあげれば、

  1. 勝手にCドライブに保存される
  2. でも実際の保存先は、シンボリックリンクしているDドライブ

これによってアクセスは成功するうえ、ファイルはシンボリックリンクしたDドライブに保存されます。

やったね!

またgit等のバージョン管理ソフトなんかも、シンボリンクリンクをした「データが保管されるフォルダ」を指定してあげることで、バージョン管理とアプリからの読み書き、どちらも実現ができます。

ぼくは今回これでサクラエディタの設定をBitBucketにUPできました。

ステキ!

勝手な理解

ぼくの勝手な理解方法です。

というよりも、「どうしたら分かりやすく考えられるか?」を考えていた結果、出てきた理解方法です(笑)

ファイルが置かれるフォルダを「物置」として考えてください。
そしてターゲットは「お店」のようなものと考えてください。

ターゲットとして設定したフォルダは、「物置」を「自分のもの」として見ることができます。

なので他の人(アプリ)にそのファイルを見せるとき「自分のお店のもの」として見る事が出来ます。

しかしこの物置は、直接訪れると、そこで直接「置いてあるもの(ファイルやフォルダ)」を見ることができます。

図解

あとがき

いかがでしたか?

なかなか使わない機能……っていうより「存在も知らんがな」って感じの機能ですよね(笑)

でも知っておくと便利なときがやってくるかもしれません!

現にgit使えない場所を、gitで管理できるようになったし!

「これ使ったらアレもこういうことできないかな?」

というのを是非考えてみてください!

見つけて実現できたら儲けもんです(笑)