現在、かさばるフォルダーをSSDからHDDに移動しようとしています(Users
フォルダーとProgramData
フォルダー)。これを効果的に行うためのディレクトリジャンクションの使用については、 短いガイド に従っています。しかし、これは私にはうまくいきません。これはまさに私が最近の試みでしたことです:
ProgramData
をHDDrobocopy /copyall /mir /xj C:\ProgramData D:\ProgramData
にコピーしますProgramData
を削除しますC:\Users
の名前をC:\Users.old
に変更しますmklink /J C:\Users D:\Users
mklink /J C:\ProgramData D:\ProgramData
dir
で、すべて問題がないことを確認してください。ただし、再起動すると、ログインスプラッシュ画面が真っ青になり、ユーザープロファイルの画像が表示されず、ログインすると次のように表示されます。
User ProfileServiceサービスがサインインに失敗しました。ユーザープロファイルを読み込めません
そこで、ProgramData
を再び移動し、Users.old
の名前をUsersに戻しました。今回は、スプラッシュ画面が正しく表示されますが、それでもユーザープロファイルの問題が発生します。
私は何を間違えましたか?
たくさん遊んだ後、答えを見つけました。これが機能しない理由は、SSDからHDDにデータをコピーするときに、既存のジャンクションがすべて削除されるためです。これは、robocopy
の/xj
フラグが、無限ループに陥らないようにするために必要なためです。
これを回避するために、PowerShellスクリプトを作成して、次のことを実行できます。
robocopy /copyall /mir /xj C:\Stuff D:\Stuff
を使用してSSDからHDDにデータをコピーしますC:\Stuff
のジャンクションごとに、D:\Stuff
に同一のジャンクションを作成しますC:\Stuff
の各ジャンクションについて、ACL権限をD:\Stuff
の対応するジャンクションにコピーします。C:\Stuff
とattrib C:\Stuff
の属性に注意してくださいC:\Stuff
を削除または名前変更しますmklink /J C:\Stuff D:\Stuff
C:\Stuff
の属性をattrib /L C:\Stuff +H +I
とのジャンクションポイントに適用します(たとえば、ProgramDataはこれらの属性を使用します)うまくいけば、これにより、すべてのジャンクションポイント、アクセス許可、および属性を維持しながら、すべてがC:\Stuff
からD:\Stuff
に移動します。
しかし、私が取った「ショートカット」があります。これらすべてに煩わされる代わりに、C:
の完全な ドライブイメージ を作成し、それをD:
に復元しました(明らかに、D:
にファイルがないことを確認します。上書きされます)。 Macrium Reflect Free や Drive Image XML など、これを行うためのフリーソフトウェアがあります。
次に、必要な追加データをD:
にコピーし、上記のステップ4にスキップしました。その後、ドライブに不要なWindowsファイルをすべて削除しました(この部分にはUbuntu USBスティックを使用する必要がありました)。
すべてが機能しています!