現象:網路磁碟可用 10 TB,C# 程式複製幾十 MB 資料夾卻報「磁碟空間不足」。
| 原因 | 現象 | 驗證指令 |
|---|---|---|
| 使用者配額 | 單一 AD 帳號/配額模板限制 (如 1 GB),超過即報錯 | 檔案總管 → 網路磁碟右鍵 → 屬性 → 配額 / `fsutil quota query X:` |
| 寫入權限不足 | 服務帳號/應用程式集區身分識別無 `Write`/`Modify` 權限 | ICACLS X:\Backup /grant "IIS AppPool\MyApp":(OI)(CI)M |
| 單檔大小限制 | FAT32 4GB、某些 NAS 單檔限制 | 檢查檔案系統格式、NAS 設定 |
| 路徑過長 | > 260 字元導致 `DirectoryNotFoundException` 被誤判為空間不足 | 啟用 Win10/Server 2016+ 長路徑支援 `fsutil behavior set disablelastaccess 1` |
try {
Directory.CreateDirectory(destDir);
foreach (var file in Directory.GetFiles(srcDir, "*", SearchOption.AllDirectories)) {
string destFile = Path.Combine(destDir, file.Substring(srcDir.Length + 1));
File.Copy(file, destFile, true);
}
} catch (IOException ex) when (ex.HResult == -2147024784) { // 0x80070070 DISK_FULL
Log.Error("磁碟空間不足(含配額): " + ex.Message);
throw new UserFriendlyException("備份失敗:您的網路磁碟配額已滿,請清理或聯繫 IT 調整配額。");
} catch (UnauthorizedAccessException ex) {
Log.Error("權限不足: " + ex.Message);
throw new UserFriendlyException("備份失敗:無寫入權限,請聯繫 IT 開啟寫入權限。");
}
遇到「明明有空間卻報不足」,先查 **配額** 再查 **權限**,通常在這兩者之一。