# 在 Windows 上將 Ollama 模型移至其他磁碟機

若要將 Ollama 已下載的模型移出 C 磁碟機，請為執行 Ollama 的帳戶設定 `OLLAMA_MODELS`。移動應用程式本身是另一項操作。只變更變數不會複製現有模型，因此請保留舊存放區，直到新存放區完成驗證。

本指南適用於一般 Windows 桌面安裝。服務、容器或 WSL 安裝可能以不同帳戶或設定執行，必須由該擁有者處理。

## 複製前先確認目前的存放區

Ollama 的 [Windows 文件](https://docs.ollama.com/windows) 區分應用程式二進位檔、記錄和模型資料。預設模型存放區位於 `%USERPROFILE%\.ollama\models` 之下。先前的 `OLLAMA_MODELS` 設定可能指向其他位置。

在新開啟的 PowerShell 視窗中，檢查使用者層級設定：

```
[Environment]::GetEnvironmentVariable("OLLAMA_MODELS", "User")
ollama list
```

設定為空白表示沒有使用者層級覆寫，並不代表服務或其他帳戶使用預設值。記錄模型清單，並檢查此安裝所使用的資料夾。存放區包含 `blobs` 和 `manifests`；請保留其相對結構，不要只複製最大的檔案。

## 檢查資料夾複製可能出錯的兩件事

複製前，請先確認目的地的可用空間與來源的確切路徑。舊的使用者層級覆寫、不同的 Windows 帳戶，或第二個 Ollama 安裝，都可能讓預設路徑造成誤導。請記下現有變數的值，包括它原本是否不存在，以便復原時能還原原始狀態。

在目的地中，`blobs` 與 `manifests` 應直接位於名為 `OLLAMA_MODELS` 的資料夾內。若變數指向 `D:\AI\Ollama\models`，預期的子項為 `D:\AI\Ollama\models\blobs` 與 `D:\AI\Ollama\models\manifests`。意外多出一層 `models` 是常見的設定錯誤，重新下載任何內容前應先排除。

這次移轉請使用專用的空白目的地。不要合併到無關的存放區，並假設檔名相符就能證明內容可互換。請保留足夠空間給完整複製的存放區及日後一般使用；變更變數不會讓兩份複本只佔用一份的空間。

## 先複製，再切換應用程式

選擇有足夠可用空間且會持續保持可用的本機磁碟機。例如，如果該磁碟機存在且您的帳戶可以寫入，`D:\AI\Ollama\models` 可以作為目的地。外接磁碟機中斷連線是可預期的失敗情況，不是授予應用程式系統管理員權限的理由。

1. 完成進行中的生成和下載，然後從系統匣功能表結束 Ollama。
2. 使用檔案總管將目前模型存放區的內容複製到所選目的地。保持原始內容不變，並在繼續之前解決任何複製錯誤。
3. 從 Windows 搜尋開啟 **編輯您的帳戶的環境變數**。
4. 以目的地路徑建立或編輯 `OLLAMA_MODELS`，然後儲存。
5. 從 [開始] 重新啟動 Ollama，並開啟新的終端機。

Ollama 的 [環境變數指示](https://docs.ollama.com/faq) 說明為何應用程式必須重新啟動才能繼承變更。較早開啟的終端機可能保留舊環境。當系統匣應用程式仍在執行時，不要只為了測試變數而建立第二個伺服器。

## 大型存放區的選用複製命令

若檔案總管的複製能順利完成，這樣就足夠。對於需要複製記錄的大型存放區，Windows 內含 [Robocopy](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy)。以下 PowerShell 範例假設已驗證的來源是預設存放區，目的地是新的專用資料夾。若安裝方式不同，請替換這兩個路徑，並在複製前結束 Ollama。

```powershell
$source = "$env:USERPROFILE\.ollama\models"
$destination = "D:\AI\Ollama\models"
robocopy "$source" "$destination" /E /L /R:1 /W:1
```

`/L` 會列出預計執行的工作，但不進行複製。請閱讀輸出頂端的來源與目的地。若兩者正確，請在不加 `/L` 的情況下執行複製，並將記錄檔保存在模型存放區之外：

```powershell
robocopy "$source" "$destination" /E /R:1 /W:1 /TEE /LOG:"$env:TEMP\ollama-model-copy.log"
$copyExitCode = $LASTEXITCODE
$copyExitCode
```

`/E` 會包含子目錄，而重試選項會限制失敗檔案的重試次數。此範例刻意不鏡像或移動來源。請勿加入 `/MIR`、`/PURGE` 或 `/MOVE`：它們的刪除行為對於保留復原複本並不需要。

Robocopy 對某些非失敗結果會使用非零代碼。代碼 8 或以上表示至少有一個複製失敗。即使低於 8，也請檢查摘要及任何不相符或多出的檔案，尤其是目的地原本不是空的時候。變更變數前請先解決錯誤；模型清單成功並不能讓失敗的檔案複製變得完整。

## 移除舊存放區之前先證明新位置可用

再次執行 `ollama list`，並與記錄的清單比較。選擇已顯示的模型，並使用其確切名稱發出小型要求。如果模型遺失，請停止並檢查資料夾結構和設定，不要讓新的下載掩蓋遷移失敗。

在測試期間檢查目的地，並確認應用程式使用預定的存放區。保留舊目錄，直到重要工作負載成功，且任何在本機建立的模型都已備份。單憑目錄大小相符，比成功使用所需模型的證據更薄弱。

如果切換失敗，請結束 Ollama，還原先前的變數值或移除新增的覆寫，然後重新啟動。未受變更的原始存放區讓此復原程序變得簡單直接。

## 讓驗證比對資料夾大小相符更嚴謹

執行中的伺服器可能保留舊的環境或已載入的模型。請先完成進行中的工作，結束常駐程式，設定新路徑後重新啟動，然後開啟全新的終端機。在要求任何模型執行前，請將 `ollama list` 與已儲存的清單比對。若有必要的項目缺少，請先檢查路徑與 `manifests` 結構。

對於每個重要的本機自訂模型，請在該次全新啟動後測試一個小型請求。只測試一個常見的下載模型，無法證明自訂模型也保留下來。請保留原始存放區，直到這些必要模型與一般應用程式工作負載都能正常運作。

若仍不清楚伺服器使用哪個目錄，請在啟動與載入前後，於 `%LOCALAPPDATA%\Ollama` 中檢查目前的 `server.log`，並參考[官方疑難排解位置](https://docs.ollama.com/troubleshooting)。請將任何回報的已設定路徑與預定目的地比對。新開啟終端機中的路徑只描述該終端機，不能證明另一個已在執行的伺服器也是如此。

不要只為了讓空白目的地看起來有在運作而建立新的下載。這可能掩蓋失敗的移轉，並在 C 槽佔用更多空間。若證據不明確，請保留兩個存放區，並在刪除原始存放區前先解決設定問題。若要復原，請結束應用程式，還原記錄的變數，若原本沒有覆寫則移除新的覆寫，然後重新啟動並驗證原始模型清單。

## 只移除已驗證的舊模型存放區

驗證之後，先檢閱舊的 `models` 目錄，再透過檔案總管移除。不要刪除整個 `.ollama` 目錄，其中可能包含設定和其他狀態。Windows 可能會永久刪除對資源回收筒而言過大的檔案，因此請閱讀確認訊息，並保留您需要的任何備份。

移動模型不會卸載目前記憶體中的模型，也不保證生成速度更快。較慢的目的地可能使初始載入耗時更長。如果問題是記憶體而非 C 磁碟機容量，請檢查工作負載和 [Windows 記憶體指南](/tw/windows/blog/windows-high-memory-usage)。

對於其他 AI 下載，[Hugging Face 有自己的快取設定](/tw/windows/blog/huggingface-cache-windows)。請設定每個工具實際的儲存擁有者，不要移動共用的上層目錄並期望每個應用程式都遵循。


Canonical: https://mole.fit/tw/windows/blog/move-ollama-models-windows
