Cドライブの空き容量を確保する — mklinkコマンド完全解説
この記事の内容
- WindowsのCドライブ不足をDドライブ活用で解決する方法を解説します
mklinkコマンドで作成できる4種類のリンク(シンボリックリンク・ハードリンク・ディレクトリシンボリックリンク・ジャンクション)の違いを説明します- ファイル・ディレクトリそれぞれのリンクの動作を実例を交えて紹介します
- ソフトウェアを動かしたままデータをCドライブからDドライブへ移動する手順を解説します
- Windows 10・Windows 11のどちらでも同じ手順で対応できます
なぜCドライブの空き容量が問題になるのか
Windowsを使っていると、何も意識しなければアプリケーションのデータはすべてCドライブに保存されます。CドライブはSSDなど高速なドライブであることが多く、Dドライブは容量は大きいが速度が遅いHDDといった構成が一般的です。
意図的にDドライブを使うよう設定しない限り、CドライブだけがどんどんいっぱいになってDドライブが余っているという状況になりがちです。
この問題を解決するのがmklinkコマンドです。ソフトウェアの動作を変えることなく、実際のデータをDドライブへ移動できます。
mklinkコマンドの基本構造
コマンドプロンプトを開いてmklinkと入力すると、ヘルプが表示されます。
基本的な構文は次のとおりです。
主なオプションは以下のとおりです。
| オプション | 説明 |
|---|---|
| (なし) | ファイルのシンボリックリンクを作成 |
/D | ディレクトリのシンボリックリンクを作成 |
/H | ハードリンクを作成 |
/J | ディレクトリジャンクション(ジャンクションポイント)を作成 |
なお、mklinkの実行には管理者権限が必要です。コマンドプロンプトを右クリックして「管理者として実行」で起動してください。
シンボリックリンク(ファイル)
シンボリックリンクはショートカットのようなものです。リンクにアクセスすると、実体のあるファイルにアクセスしているのと同じように扱われます。
作成例
これでlink1.txtという名前のシンボリックリンクが作成され、test.txtの内容にアクセスできるようになります。
シンボリックリンクの特徴
- リンクは別の場所(別ドライブも可)に置けます
- リンクを削除しても実体のファイルには影響しません
- 実体のファイルを削除すると、リンク経由でアクセスできなくなります
- プロパティを見ると「ショートカット」として表示されます
ハードリンク
ハードリンクはシンボリックリンクとは異なり、リンクが「実体」として振る舞います。
作成例
ハードリンクの特徴
- プロパティを見ても「ショートカット」とは表示されず、通常のファイルとまったく同じように見えます
- どちらのファイルから編集しても、もう一方にも変更が反映されます
- どちらが「本体」かわからなくなるほど、両方が同じファイルを指しています
- 元のファイルを削除してもリンクしたファイルは生き残ります(シンボリックリンクとの大きな違いです)
ディレクトリのシンボリックリンク
ファイルだけでなく、ディレクトリに対してもシンボリックリンクを作れます。その際は/Dオプションが必要です。
作成例
/Dを付けないとファイルのシンボリックリンクとして作成されてしまい、リンク先がフォルダーの場合にうまく動作しません。
ドライブをまたいだリンクの作成
このようにDドライブ側にリンクを置き、リンク先をCドライブのディレクトリにすることも可能です。
ディレクトリジャンクション
ディレクトリに対するシンボリックリンクに似ていますが、ソフトウェアに対してより「透過的」に見えます。
作成例
ジャンクションの特徴
- プロパティを見ても「ショートカット」とは表示されず、普通のフォルダーに近い見た目になります
- ソフトウェアに対して「そこに本物のディレクトリがある」ように見せかけることができます
- アプリケーションを動かしたままデータを別ドライブへ移すのに適しています
- ディレクトリに対するハードリンクに近いイメージです
実践:Cドライブのデータを丸ごとDドライブに移す手順
ここでは、Cドライブにあるアプリのデータをソフトウェアを動かしたままDドライブへ移す具体的な手順を説明します。
Step 1:移動対象のディレクトリを確認する
移動したいフォルダーを特定します。例としてC:\testをDドライブへ移す場合で解説します。
Step 2:ディレクトリをDドライブへ移動する
エクスプローラーなどでC:\testフォルダーをDドライブへ移動します(切り取り→貼り付け)。
移動後、C:\testは存在しなくなります。
Step 3:ジャンクションポイントを作成する
管理者として実行したコマンドプロンプトで次のコマンドを実行します。
C:\test:新しく作成するジャンクション(移動元にあったパス)D:\test:実際のデータが存在する移動先のパス
Enterを押すとジャンクションが作成されます。
Step 4:動作を確認する
C:\testにアクセスすると、自動的にD:\testの内容が表示されます。アプリケーションからは引き続きC:\testへアクセスできるため、設定変更なしに正常動作します。
4種類のリンクまとめ比較
| 種類 | オプション | 対象 | 本体削除時 | ソフトへの透過性 |
|---|---|---|---|---|
| シンボリックリンク | なし | ファイル | リンク無効化 | ショートカットとして見える |
| ハードリンク | /H | ファイル | リンクが生き残る | 通常ファイルとして見える |
| ディレクトリシンボリックリンク | /D | ディレクトリ | リンク無効化 | ショートカットとして見える |
| ディレクトリジャンクション | /J | ディレクトリ | リンクが生き残る | 通常フォルダーとして見える |
まとめ
mklinkコマンドを使うことで、ソフトウェアの設定を一切変えることなくデータをCドライブからDドライブへ移すことができます。
Cドライブの空き容量確保を目的とする場合は、ディレクトリジャンクション(/Jオプション)を使うのが最も適しています。アプリケーションに対して「そこに本物のフォルダーがある」ように見せかけることができるため、ゲームデータやアプリのキャッシュなど、移動先を指定できないケースでも有効に機能します。
手順は「フォルダーをDドライブへ移動」→「元の場所にジャンクションを作成」の2ステップです。一度覚えてしまえば様々な場面に応用できますので、ぜひ試してみてください。