ディレクトリ移行ツール(Directory Migration Tool)

Tool

概要

この「Directory Migration Tool」は、Windows環境で大容量ディレクトリを別ドライブへ移動しつつ、元のパスを維持してアプリケーションの動作に影響を与えないようにするツールです。移行はディレクトリのシンボリックリンク(mklink /D)を用いて行い、実ファイルは別ディスクに置かれます。コピーにはrobocopyの鏡像(ミラー)機能を使い、アクセス権やタイムスタンプも保持。WPFベースのGUIとPowerShellベースのCLIの両方をサポートし、移行中の進捗・速度・残り時間の表示、移行前のディスク空き容量チェック、重要パスのバリデーション、失敗時の自動ロールバック、一括設定ファイルによるワンキー移行・復元など、現場で使える実装が揃っています。

GitHub

リポジトリの統計情報

  • スター数: 7
  • フォーク数: 2
  • ウォッチャー数: 7
  • コミット数: 30
  • ファイル数: 16
  • メインの言語: C#

主な特徴

  • 透過的な移行:mklink /D によるディレクトリシンボリックリンクでアプリ側に変更を生じさせない
  • 高信頼コピー:robocopy を利用したミラーコピーで権限・タイムスタンプを保持
  • GUIとCLI両対応:WPF ベースの操作画面と PowerShell スクリプトで自動化も可能
  • 安全機能:ディスク容量チェック、重要パスのバリデーション、エラー時の自動ロールバック

技術的なポイント

本プロジェクトは主に C#(WPF)で実装されたフロントエンドと、移行のコアロジックを扱う MigrationCore に分かれています。移行処理の主軸は「robocopy による安全なコピー」と「mklink によるパスの透明化」です。robocopy は /MIR や /COPYALL 相当でACL・所有権・タイムスタンプを保ちつつ高速にファイルを同期できるため、移行先での再配置後もアクセス権の問題を起こしにくい利点があります。一方、Windows のシンボリックリンク(mklink /D)は元のパスを保持するため、既存アプリがそのパスを参照し続けられます。注意点として、シンボリックリンク作成は管理者権限が必要なケースがある点(Windows 10/11 の開発者モードで非管理者でも可能になる場合あり)や、リンク種類(Directory Symlink vs Junction)の違いにより動作や互換性が変わることを考慮しています。

エラー回避のため、本ツールは移行前にターゲットディスクの空き容量を検査し、大きなファイル群の統計をとることで事前警告を行います。移行中は進捗、速度、残り時間を算出して表示し、コピー処理で異常が発生した場合は自動的にロールバック(作成したリンクの削除とコピー済みデータの削除または復元)を試みます。さらに、システム重要フォルダ(Windows、Program Files 等)を移行対象に含めないようパス検証を行い、操作ミスによる致命的な移行を防止します。

設計上、完全なトランザクション性(途中で完全に元に戻せること)はOSの制約上難しく、特に移行中に書き込みが発生したファイルの整合性管理はユーザー側でのダウンタイム設定やアプリケーション停止が推奨されます。また、ネットワーク経由のターゲットやファイルシステム差異、長いパス名や特殊権限の再付与などは運用時に注意が必要です。ワンキー移行用の quick-migrate.json により複数の移行タスクをバッチ実行・復元でき、PowerShell スクリプトと連携してスケジュール化や運用自動化も可能です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • MigrationCore: dir
  • MoveWithSymlink.ps1: file
  • MoveWithSymlink.sln: file

…他 11 ファイル

まとめ

現場で使える実用的な移行ツール。権限や稼働状態に注意すれば強力。

リポジトリ情報:

READMEの抜粋:

目录迁移工具 (Directory Migration Tool) · WPF 版本

一个使用符号链接透明迁移大型目录的 Windows 工具,支持 PowerShell CLI 和 WPF GUI 两种方式。

功能特性

  • 透明迁移: 使用目录符号链接 (mklink /D),应用程序无感知
  • 可靠复制: 使用 robocopy 镜像复制,保留权限、时间戳和属性
  • 实时进度: 显示复制进度、速度、预计剩余时间
  • 安全回滚: 出错自动回滚至原始状态
  • 路径验证: 阻止迁移系统关键目录
  • 磁盘检查: 验证目标磁盘空间是否充足
  • 大文件统计: 统计超过阈值的大文件数量
  • 一键迁移模式: 基于 quick-migrate.json 的批量迁移与还原
  • 可逆迁移(还原功能): 将符号链接一键还原为真实目录

系统要求

  • Windows 10/11 (x64)
  • .NET 8.0 Desktop Runtime(仅框架依赖版本需要) …