C盘飘红?从临时文件到Docker/WSL的完整清理指南
2026/8/27 10:46:26 网站建设 项目流程

电脑用久了,C 盘飘红是 Windows 用户最常见的痛点。多数人第一反应是打开各种“清理大师”,结果装完发现系统更卡了。这次我们不谈概念,直接给一套可执行的清理流程:从系统自带工具、临时文件、更新缓存,到开发环境里的 npm、pip、Docker、WSL 缓存,再到休眠文件、系统还原点、大文件定位,一步步带你把 C 盘空间“抠”出来。

这不仅是删几个文件那么简单,还要解决“为什么清理完没过多久又满了”的问题。文中所有命令都建议在管理员权限的 PowerShell 或 CMD 中执行,涉及改动系统文件的地方会单独标注风险,照做之前先看一眼。

1. C 盘空间消耗的主要来源与核心思路

先搞清楚空间去哪了,再动手清理,避免误删。以一台安装 Windows 11、日常办公加开发使用的电脑为例,C 盘空间主要被以下几类占用:

占用类别典型位置是否可直接删除说明
临时文件%TEMP%C:\Windows\Temp可以系统运行过程中生成的缓存,随时可能被重新创建
回收站C:\$Recycle.Bin可以清空后无法找回,删除前确认
Windows 更新缓存C:\Windows\SoftwareDistribution\Download可以安装完更新后残留的安装包,占几个 GB 很常见
WinSxS 组件存储C:\Windows\WinSxS禁止手动删除必须用 DISM 工具做组件清理
休眠文件C:\hiberfil.sys可以通过关闭休眠释放文件大小约为物理内存的 40% 到 75%
页面文件C:\pagefile.sys不建议删除可以迁移到其他盘,但会影响系统调试和部分软件运行
系统还原点系统卷影副本可以删除后无法回滚系统状态,保留最近一个即可
开发缓存npm、pip、Docker、WSL 等可以这些缓存通常可以随时重建
应用缓存Chrome、微信、浏览器缓存可以微信的聊天文件、浏览器缓存容易占大量空间

清理的核心思路是:优先处理可以自动重建的缓存,其次清理系统更新残留,最后再考虑休眠文件、页面文件这类需要权衡的选项。真正的“大块头”往往藏在你没注意到的地方,比如 Docker 镜像、WSL 虚拟磁盘和微信数据。

2. 明确清理边界:哪些能删,哪些不能动

很多人清理 C 盘翻车,是因为把“看起来没用的文件”当成垃圾删了。这里先划定一条安全边界。

可以放心清理的内容

  • 临时目录%TEMP%C:\Windows\Temp里的文件,系统会按需重建。
  • 回收站:回收站里的内容已经是被删除的文件,清空后释放空间。
  • Windows 更新下载缓存C:\Windows\SoftwareDistribution\Download中的安装包,更新完成后不再需要。
  • 缩略图缓存C:\Users\用户名\AppData\Local\Microsoft\Windows\Explorer下的 thumbcache 文件,删了会自动重建。
  • 开发工具缓存:npm 缓存、pip 缓存、Yarn 缓存、NuGet 缓存、Maven 缓存,这些都可以通过对应命令清理。
  • Docker 悬空镜像和构建缓存docker system prune可以清理不再使用的镜像层和构建缓存。
  • WSL 内部缓存:WSL 虚拟磁盘里的包管理器缓存、旧内核文件。

不要手动删除的内容

  • C:\Windows目录下的系统文件,绝不能用“删除文件”的方式清理。
  • WinSxS目录,很多人看到它占了十几个 GB 就想直接删,这是错误操作。这个目录是 Windows 组件存储,手动删除会导致系统更新失败或组件损坏。
  • C:\Program FilesC:\Program Files (x86)下的程序文件,要用卸载程序来移除,不能手动删文件夹。
  • C:\Users\用户名\AppData\Roaming下的应用配置和缓存,有些缓存删除后会导致软件需要重新登录或重新下载资源,除非确认是纯缓存,否则不要乱动。
  • pagefile.sysswapfile.sys,直接删除无效,需要通过系统设置调整虚拟内存。

使用边界提醒

清理 C 盘操作虽然不像系统重装那样高风险,但误删项目文件、本地代码仓库、未提交的构建产物仍然会造成损失。执行清理前,对C:\Users\用户名\DocumentsC:\Users\用户名\Desktop、本地 Git 仓库等重要目录做好备份或确认不需要恢复。涉及公司电脑、服务器或他人设备时,先确认清理策略和权限,不要把公共环境的缓存当成个人电脑内容处理。

3. 使用 Windows 系统自带工具进行清理

系统自带工具是清理的第一步,也是最安全的入口。

3.1 磁盘清理工具

按下 Win + S 搜索“磁盘清理”,或者直接在运行框输入cleanmgr,选择 C 盘,系统会先扫描可清理的项目。

如果界面里没有出现“清理系统文件”按钮,先点击它,工具会重新扫描,这次能识别出 Windows 更新清理、系统还原和旧 Windows 安装文件等项目。

建议勾选的项目:

  • Windows 更新清理
  • 临时文件
  • 回收站
  • 缩略图
  • 传递优化文件
  • DirectX 着色器缓存

勾选完成后点击确定,等待清理完成。

3.2 存储感知

Windows 10 和 Windows 11 都内置了存储感知。在“设置 -> 系统 -> 存储”中打开存储感知,系统会在磁盘空间不足时自动清理临时文件和回收站内容。也可以手动点击“临时文件”进入扫描,逐项清理。

这里要留意“下载”文件夹,存储感知默认不会清理它,避免误删普通下载文件。

3.3 按类别查看空间占用

在“设置 -> 系统 -> 存储”页面,系统会列出“应用和功能”“临时文件”“其他”等类别。点击“其他”能看到 C 盘根目录下哪些文件夹体积最大,帮助定位大型目录。

4. Temp 临时文件与 Windows 更新缓存深度清理

4.1 清理用户临时目录

在“运行”里输入%TEMP%,会打开当前用户的临时目录,Ctrl + A 全选后删除。如果提示文件被占用,跳过即可,不会影响系统。

也可以使用一条命令,在管理员 PowerShell 中执行:

Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue

这条命令会忽略无法删除的占用文件,剩下的都会被清掉。

4.2 清理 Windows 更新缓存

Windows 更新下载的安装包存放在C:\Windows\SoftwareDistribution\Download,更新安装完成后这些文件不再需要。直接删除可能遇到文件占用,更稳妥的做法是停止 Windows Update 服务后再清理:

net stop wuauserv net stop bits net stop cryptsvc del /f /q /s C:\Windows\SoftwareDistribution\Download\*.* net start wuauserv net start bits net start cryptsvc

执行完成后,更新缓存目录会小很多。这个操作不影响 Windows Update 服务本身,下次更新时系统会自动重建下载目录。

4.3 组件存储清理

WinSxS 目录是 C 盘体积大户,但原因比较复杂。WinSxS 里包含了系统组件、更新替代版本和硬链接文件,很多文件在资源管理器里看似占空间,实际通过硬链接被系统重复引用,不能简单按文件大小计算。

正确的清理方式是使用 DISM:

# 先分析组件存储占用情况 Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

分析完成后会给出“实际使用的空间”和“可以清理的空间”。如果可清理空间较大,再执行:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

参数说明:

  • StartComponentCleanup清理被替代的组件版本。
  • 加上/ResetBase会把所有组件视为基线,能释放更多空间,但清理后无法卸载当前已安装的更新,通常只在系统稳定运行一段时间后执行。

在 Windows 11 中,系统还会自动执行“计划任务”形式的组件清理,因此这个操作不是必须频繁执行。建议每半年做一次分析,再看是否需要实际清理。

5. 开发环境缓存清理(npm、pip、Docker、WSL)

如果电脑是开发者主力机,C 盘空间杀手往往不是系统文件,而是开发工具缓存和虚拟磁盘。

5.1 npm 与 Yarn 缓存

npm 的缓存目录通常在C:\Users\用户名\AppData\Local\npm-cache,长期安装依赖会积累大量 cache 文件。直接删除目录也可以,但更规范的方式是:

npm cache clean --force

Yarn 1.x 的缓存目录在C:\Users\用户名\AppData\Local\Yarn\Cache

yarn cache clean

Yarn Berry 版本使用yarn cache clean --all

5.2 pip 缓存

Python 项目多的时候,pip 缓存也很可观。在C:\Users\用户名\AppData\Local\pip\cache下,积累几个 GB 很正常。

pip cache purge

这个命令会清空 pip 的 HTTP 缓存和 wheel 缓存,不影响已安装的 Python 包。

5.3 Docker 清理

Docker Desktop 的虚拟磁盘文件默认放在 C 盘的用户目录下,镜像、容器、卷和构建缓存都会占用虚拟磁盘空间,而且虚拟磁盘文件只会增长,删除容器内容后,磁盘文件不一定自动收缩。

先查看占用情况:

docker system df

输出会显示 IMAGES、CONTAINERS、LOCAL VOLUMES、BUILD CACHE 各自的占用。清理命令:

# 清理悬空镜像、停止的容器、无用网络、构建缓存 docker system prune # 更彻底,包含所有未被容器使用的镜像、卷缓存和构建缓存 docker system prune -a --volumes

注意docker system prune -a --volumes会把未使用的镜像和卷都删掉,如果包含本地数据库容器且未挂载外部存储卷,数据会丢失,执行前先确认容器是否挂载了宿主机目录。

清理完 Docker 内部空间后,还需要在 Docker Desktop 设置中检查虚拟磁盘大小。如果虚拟磁盘文件依然很大,可以在“Settings -> Resources -> Disk”里调整磁盘镜像大小,或者通过docker system df确认内部空间已释放后,选择重置虚拟磁盘(这会删除所有镜像和容器,适合彻底整理)。

5.4 WSL 虚拟磁盘

WSL 的发行版默认安装在C:\Users\用户名\AppData\Local\Packages\...\LocalState\ext4.vhdx,这个文件会随着 WSL 内部的包安装和编译逐渐膨胀。即使删掉 WSL 内部的文件,vhdx 文件也不一定自动回收空间。

可以在 WSL 内部先清理包管理缓存:

sudo apt clean sudo apt autoremove

然后回到 Windows 的 PowerShell 执行虚拟磁盘压缩:

wsl --shutdown diskpart

在 diskpart 中执行:

select vdisk file="C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit

注意把 vhdx 路径替换成自己的 WSL 发行版路径。执行完成后,C 盘会释放大量空间。

5.5 node_modules 与构建目录

项目目录下的node_modules体积通常很大,但不应该直接删除整个项目里的 node_modules。正确做法是清理不再使用的旧项目,或者把当前不活跃的项目移到其他磁盘。如果某个项目暂时不需要依赖,可以先删除 node_modules,需要时用npm install重新安装。

前端项目的distbuild.next目录,后端项目的target__pycache__目录,都是构建产物,可以重新生成,确认不再需要后可以清理。

6. 休眠文件、页面文件与系统还原点

这三项是 C 盘里隐蔽的“大文件”,平时在资源管理器里默认不可见,但实际占用很大。

6.1 休眠文件

休眠文件C:\hiberfil.sys的大小通常和物理内存有关。如果电脑物理内存是 16GB,休眠文件可能占到 6GB 以上。对于使用台式机或不依赖“休眠”功能的用户,可以关闭:

powercfg /h off

执行后hiberfil.sys会被直接删除,立即释放几个 GB。如果之后需要使用“休眠”功能,再执行powercfg /h on重新开启。

注意:关闭休眠后,笔记本合盖进入“休眠”的能力会失效,通常使用睡眠代替。如果要保持“快速启动”功能,需要保留休眠文件,这部分空间省不掉。

6.2 页面文件

pagefile.sys是虚拟内存文件,不建议删除。但可以把它迁移到非 C 盘,释放 C 盘空间。设置路径在“系统属性 -> 高级 -> 性能设置 -> 高级 -> 虚拟内存更改”。

操作步骤:

  1. 取消勾选“自动管理所有驱动器的分页文件大小”。
  2. 选择 C 盘,设置为“无分页文件”,点击“设置”。
  3. 选择其他盘符(如 D 盘),设置为“系统管理的大小”,点击“设置”。
  4. 确认后重启电脑。

这样 C 盘根目录的 pagefile.sys 会消失,空间得到释放。迁移后如果蓝屏调试需要转储文件,记得把转储文件目录也调整到对应盘符。

6.3 系统还原点

系统还原点也占用磁盘空间。在“系统属性 -> 系统保护”中,可以看到 C 盘的还原点设置和已用空间。点击“配置”,可以调整最大使用量,或者点击“删除”按钮移除所有还原点。

删除所有还原点会失去系统回滚能力,如果系统运行稳定,可以考虑只保留最近一个还原点。需要保留还原功能但减少占用的,把最大使用量调整到 5% 到 10% 即可。

7. 大文件、重复文件与旧目录的定位与迁移

清理完上面这些固定位置后,C 盘空间通常会有明显改善。但如果你想再多挤出几个 GB,就需要自己定位大文件和重复文件。

7.1 使用 PowerShell 扫描大文件

在管理员 PowerShell 中执行以下命令,扫描 C 盘用户目录下所有超过 1GB 的文件,并按大小排序:

Get-ChildItem -Path C:\Users\你的用户名 -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.Length -gt 1GB } | Sort-Object -Property Length -Descending | Select-Object -First 50 FullName, @{Name='SizeGB'; Expression={[math]::Round($_.Length / 1GB, 2)}} | Format-Table -AutoSize

扫描整个 C 盘也可以用:

Get-ChildItem -Path C:\ -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.Length -gt 1GB } | Sort-Object -Property Length -Descending | Select-Object -First 50 FullName, @{Name='SizeGB'; Expression={[math]::Round($_.Length / 1GB, 2)}} | Export-Csv -Path D:\big_files.csv -NoTypeInformation

把结果导出到 CSV,方便逐个排查。ErrorAction SilentlyContinue的目的是跳过无权限访问的目录,扫描过程会跳过系统受保护的目录。

7.2 对比目录占用

如果不想在 PowerShell 里折腾,可以使用图形化工具。常见的磁盘空间分析工具有 TreeSize Free、WizTree、SpaceSniffer。这类工具会以图形化的方式显示哪些目录占用最大,能直接帮助定位可疑文件。

补充说明,在实际项目中借用这些工具时,先保证来源可信,从官方网站下载,不要使用第三方修改版。

7.3 迁移用户目录

很多软件默认把数据放在C:\Users\用户名\DocumentsC:\Users\用户名\DownloadsC:\Users\用户名\Desktop,这些目录很容易积累大量文件。对于不常用的文件,将整个目录迁移到其他盘符,然后通过“位置”设置重新指向。

操作方式:右键点击“下载”文件夹,选择“属性 -> 位置”,把路径改为D:\Downloads,点击“移动”。系统会把现有文件迁移到新位置,之后新下载的文件直接写入 D 盘。

同样的方法适用于“桌面”“文档”“图片”“视频”。迁移之后,大多数软件的默认保存路径会继续正常工作,因为系统已经通过虚拟路径做了重定向。

7.4 微信、QQ 与其他应用的聊天记录和缓存

微信、QQ 这类软件的数据默认存储在用户目录的 Documents 下,具体为:

  • 微信:C:\Users\用户名\Documents\WeChat Files
  • 微信新版本:C:\Users\用户名\AppData\Roaming\Tencent\WeChatC:\Users\用户名\Documents\WeChat Files,取决于版本
  • QQ:C:\Users\用户名\Documents\Tencent Files

包含聊天图片、视频、文件接收记录,占几个 GB 到几十 GB 都很正常。在微信设置中把文件存储位置改到其他盘符,然后把原来的文件迁移过去,就能释放大量空间。

应用自身的缓存文件,如浏览器缓存、Electron 应用缓存,可以通过应用设置或工具清理,不建议直接删除 AppData 下的整个目录,以免引发应用异常。

8. 常见问题与排查方法

清理 C 盘过程中经常遇到一些问题,这里整理了一张排查表。

问题现象可能原因排查方式解决方案
清理后 C 盘空间没有明显变化清理的内容本身就不大,大文件还没定位到使用磁盘分析工具看目录占比重点检查微信、Docker、WSL、休眠文件
删除临时文件提示“文件正在使用”应用程序或系统进程占用了部分临时文件在任务管理器中确认占用进程跳过占用文件,重启后再清理
del命令无法删除 SoftwareDistribution 下的文件Windows Update 服务正在运行查看服务状态先执行net stop wuauserv停止服务
WinSxS 目录很大,清理后仍然很大分析结果显示“实际使用空间”本身就高使用 DISM 分析执行组件清理,但不要手动删除目录
Docker 清理后 vhdx 文件仍然占用大量空间虚拟磁盘文件不会自动收缩Docker Desktop 中查看磁盘镜像设置在 Docker Desktop 中调整磁盘大小或执行虚拟磁盘压缩
WSL 内部清理后 ext4.vhdx 没有变小vhdx 文件需要手动 compact检查 LocalState 目录的 vhdx 大小按第 5.4 节 diskpart 压缩流程执行
清理后某些软件无法正常打开误删了 AppData 下的关键配置或缓存查看软件日志或重新安装验证恢复系统还原点,或重新安装对应软件
C 盘空间依然紧张,没有大文件可删部分文件在系统目录中,常规工具扫描不到使用管理员权限分析或检查系统保护设置压缩页面文件、关闭休眠、调整系统还原点空间上限

8.1 清理后系统自动还原

如果清理过程中误删了重要文件,立即停止继续清理。优先检查回收站,然后检查系统还原点。只要还保留还原点,可以通过“系统属性 -> 系统保护 -> 系统还原”回到清理前的状态。

8.2 清理后 C 盘又迅速变满

这种情况通常不是缓存问题,而是有程序在持续写入。排查思路是先看是不是 Windows 更新在后台下载,再检查是否有 Docker、WSL、虚拟机磁盘在持续增长,最后用资源监视器观察磁盘写入进程,确认是哪个应用在短期内产生大量写入。

9. 日常维护与自动化建议

C 盘清理不应该是一次性工作,更合适的方式是把常规清理固化到日常流程里,并定期自动执行。

9.1 定期执行系统盘清理脚本

可以把临时文件清理、更新缓存清理合并成一个 PowerShell 脚本,在管理员权限下定时执行:

# 清理用户临时文件与系统临时文件 Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue # 清理 Windows 更新下载缓存前,先停止服务 Stop-Service -Name wuauserv -Force -ErrorAction SilentlyContinue Stop-Service -Name bits -Force -ErrorAction SilentlyContinue Remove-Item -Path "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue Start-Service -Name wuauserv Start-Service -Name bits # 跳过回收站清理,回收站中的内容需要用户确认 # 仅输出当前系统盘剩余空间 Get-PSDrive C | Select-Object @{Name='FreeGB'; Expression={[math]::Round($_.Free/1GB,2)}}

把脚本保存为.ps1文件,在“任务计划程序”里创建一个每天或每周执行的基础任务,使用管理员权限运行。任务计划程序执行 PowerShell 脚本时,注意执行策略限制,Restricted策略会因为无法运行脚本导致任务失败,可以用-ExecutionPolicy Bypass作为启动参数,或者通过Set-ExecutionPolicy RemoteSigned调整本机策略。

下面是一个在 CMD 中创建计划任务的示例,每天凌晨 3 点执行:

schtasks /Create /TN "C盘临时清理" /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File D:\Scripts\clean-cache.ps1" /SC DAILY /ST 03:00 /RU SYSTEM

/RU SYSTEM表示以系统权限运行。要注意,脚本里不要包含回收站清空、休眠文件关闭、页面文件调整这类交互性强的操作,这些只适合手动执行。

9.2 Docker 与 WSL 的定期清理

Docker 的构建缓存特别容易堆积,可以定期执行:

docker system prune -f

-f参数不做交互确认。WSL 的apt clean可以放在 WSL 内的定时任务中,或者每个月手动执行一次。正常节奏下,Windows 更新缓存和临时文件可以每周清理一次,Docker 和 WSL 可以按月清理。

9.3 目录组织和迁移习惯

新项目、下载文件、临时工作文件尽量不要放在 C 盘桌面。在 D 盘建立一个完整的目录结构,例如:

D:\Projects D:\Downloads D:\Documents D:\Software

把系统默认的下载目录、文档目录、桌面目录都重定向到 D 盘后,C 盘的增长速度会明显放缓。这里有一个细节需要提醒,迁移目录后,一些旧程序如果硬编码了默认路径,可能无法保存文件到原位置,具体情况要看软件的适配程度。

9.4 关注“幽灵文件”

部分软件会创建巨大的隐藏文件,比如:

  • 沙盒软件的磁盘镜像
  • 虚拟机磁盘文件(VMware、VirtualBox)
  • Android 模拟器的用户数据镜像
  • 加密容器文件(如 VeraCrypt 容器)
  • 数据库数据文件

这些文件在磁盘分析工具里显示为普通大文件,但它们不属于缓存,删除会导致软件数据丢失。遇到这类文件时,确认用途后再处理,能迁移到其他盘就迁移,不能迁移的考虑通过软件自身的设置调整存储位置。

10. 总结与下一步

C 盘清理这件事,按优先级排下来应该是:先用系统自带磁盘清理和存储感知处理临时文件,再清理 Windows 更新缓存,接着排查开发环境缓存和 Docker/WSL 虚拟磁盘,最后处理休眠文件、页面文件和系统还原点。这些操作完成后,再用大文件扫描工具排查剩余体积。

最先应该验证的是磁盘清理工具和临时目录清理,这两步风险最低、见效最快。最容易踩的坑是手动删除 WinSxS 目录和误删 AppData 下的软件数据,这两个位置不管看起来多大,都别用“删除”的方式处理。

后续可以继续扩展的方向:把第 9.1 节的清理脚本接入任务计划程序,定期执行;给 C 盘剩余空间设置一个阈值提醒;把新项目、下载文件、文档目录全部迁移到非系统盘,从源头上减少 C 盘写入量。

如果清理完 C 盘后空间仍然不足,下一步要考虑的是磁盘扩容或者卸载不常用的大型软件,这时候再做进一步判断。建议收藏备用,方便下次 C 盘再飘红的时候,直接照着流程操作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询