我正在為工作中的新電腦使用融合設定(例如 128GB SSD 和 1TB HDD)。 SSD 僅用於使用者設定文件,所有應用程式都應安裝在 HDD 上。然而,許多員工只是將所有資料轉儲到「桌面」或「文件」上,從而填滿了 SSD。有沒有辦法以某種方式將資料從「桌面」和「文件」等資料夾重定向到 HDD,或者可能將作業系統保留在 SSD 上,但將一些使用者設定檔資料夾移至 HDD?謝謝!基恩
答案1
移動整個使用者設定檔是一種選擇。這最容易通過更改註冊表中的預設設定檔位置然後建立一個新用戶以供日常使用(如果需要,您甚至可以在之後刪除舊用戶)。相反,您可以移動已建立的用戶配置文件,但這很混亂;您必須在註冊表中找到對舊設定檔位置的所有引用並進行更改。更好的選擇是在作業系統離線時移動您的設定檔(甚至整個使用者資料夾),然後建立目錄連接或符號連結(symlink)從C:\Users
(或C:\Users\<username>
) 到新位置。該技術在 Win8 之前也應該有效(儘管有 URL);符號連結是在 Vista 中引入的,而連接則更古老(儘管在 Vista 中使用該命令之前,創建它們曾經比較困難mklink
)。
請注意,這兩種方法基本上不受支援。如果您這樣做,您可能會發現自己無法執行安裝服務包或就地升級 Windows 等操作 - 我在 Vista 電腦上遇到了這個問題,不知道它是否已修復 - 並且可能會遇到其他問題也。它還無法解決在不讓您選擇位置的情況下安裝程式但不安裝到您的使用者設定檔的問題。最後,有一個觀點認為至少將設定檔的核心部分(使用者註冊表和系統設定檔)放在啟動磁碟上。這不僅會更快(如果您的啟動磁碟是 SSD 而資料磁碟不是),而且意味著如果您的資料磁碟損壞或被刪除,您的設定檔也不會變得無法使用。
為了支援「啟動磁碟機上的關鍵配置文件,其他地方的資料」的想法,Windows(對於現在的許多版本,不確定何時啟動)允許您更改大多數個人資料目錄的位置。本質上,桌面/文件/下載/音樂/圖片/影片目錄已被虛擬的一段時間以來的位置(例如,在資源管理器中查看時,XP->Vista 將“我的文檔”更改為“文檔”,但底層文件系統名稱沒有不是如果您進行了就地升級,則進行更改)。開啟 Windows 資源管理器,前往您的使用者設定文件,然後右鍵單擊虛擬目錄之一。打開Properties
並轉到“位置”標籤。按Move...
一下並在資料磁碟機上選擇您希望該虛擬目錄的內容駐留在其中的目錄(已建立後,如果需要)。 Windows 將提供將所有內容從目前「真實」目錄移至新目錄的功能。此後,任何嘗試安裝到「您的文件資料夾」的內容實際上都會安裝在新位置下(當然,任何簡單地硬編碼路徑(例如%USER_PROFILE%\Documents\StupidApp_Stuff
不通過 shell API)的內容都不會看到此更改)。也不能解決「程式只是將自己放在任何它想要的地方而不詢問你」的問題......但至少這種方法得到了微軟的支持,並且將你的數據(文檔,音樂,儲存的遊戲,等等)與你的資料分開。
為了處理程序粗暴地將自身(或其文件)放置在不需要的位置的情況,我再次推薦符號連結。將有問題的檔案或目錄(當然,相關程式未運行)移到資料驅動器,然後用指向新位置的符號連結取代其原始位置(使用mklink
)。例如,如果C:\ProgramData\RudeApp
佔用了數十 GB 並浪費了 SSD 的空間,您可以嘗試執行以下命令(這假設使用 CMD,而不是 Powershell 或其他 shell,並假設您還沒有目錄D:\ProgramData
):
md D:\ProgramData
xcopy /e /k /o /h C:\ProgramData\RudeApp D:\ProgramData\RudeApp\
rd /s C:\ProgramData\RudeApp
mklink /d C:\ProgramData\RudeApp D:\ProgramData\RudeApp
依序,它的作用是:
- 在 D: 磁碟機上建立 ProgramData 目錄(當然,ProgramData 是隱藏的,並且在 C: 磁碟機上有一些棘手的 ACL,因此您可能想要使用
xcopy /k /o /h C:\ProgramData D:\ProgramData
它來取得所有元數據,儘管這也會直接複製ProgramData 下的所有文件) - 將原始 C:\ProgramData\RudeApp 目錄中的所有檔案複製到資料磁碟機上的新目錄 (D:\ProgramData\RudeApp)。此複製是遞歸的(它也會複製子目錄),並保留檔案安全性和屬性。
- 刪除原來的C:\ProgramData\RudeApp目錄。如果您想確保一切正常,您可以重新命名它而不是刪除它,然後再將其刪除。
- 在 C:\ProgramData\RudeApp(應用程式期望找到其檔案的位置)建立目錄符號鏈接,該連結指向新位置 (D:\ProgramData\RudeApp)。程式(包括Windows 資源管理器)將看到該鏈接,就好像它是C: 上的目錄一樣,但它只是指向D: 上的目錄的指針(用NTFS 術語來說,是“重新分析點”) 。此指標僅佔用 C: 上很小的空間。
您可以安全地刪除符號鏈接,而不會影響連結到的檔案或目錄。重命名符號連結也是安全的(儘管正在尋找它的東西會認為您刪除了該資料夾)。重新命名或移動連結到檔案或目錄是不是安全的;這將破壞鏈接,您需要刪除它並重新建立它指向新位置。
答案2
連結點、硬連結等
您需要在 mklink /j 之前建立目標資料夾並複製其中的文件
MKLINK [[/D] | [/H] | [/J]] 連結目標
mklink /j Documents j:\Documents
mklink /?
來自網站開發者花絮本文對此進行了解釋。 windows 檔案連接符號連結和硬連結
符號連結就像快捷方式,但不是儲存為文件,而是註冊到硬碟分割區。它不使用任何磁碟空間,並且所有程式都能識別連結和目標。符號連結可以指向電腦本機或使用 SMB 路徑通過網路的任何檔案或資料夾。
檔案硬連結略有不同,無法在多個分割區上使用,這表示磁碟機 C: 上不能有指向磁碟機 D: 上的檔案的連結。文件硬連結指向目標並將其複製為鏡像副本,但該副本不使用硬碟分割區上的任何額外空間。因此,鏡像 1 GB 檔案的 2 個硬連結總共僅使用分割區上的 1 GB,而不是 3 GB。重要的是,如果硬連結或目標被刪除,其他連結將保留資料。對目標或連結內容的變更會自動傳播到所有其他項目。
聯結的行為類似於目錄的硬鏈接,但與檔案硬連結不同,您可以建立跨越多個分割區的聯結。同樣,目錄連接及其內容儲存在硬碟機分割區上,但它們不使用任何額外的空間。對目標或連結中內容的任何變更都會自動傳播,除非目標目錄被刪除或重新命名。在這種情況下,指向目標的所有連結都將中斷並在分區上徘徊。