ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

C盘爆满不用怕:用robocopy和mklink给大文件目录搬家

C盘爆满不用怕:用robocopy和mklink给大文件目录搬家 1. C盘又红了先别急着装“清理大师”C盘满了怎么清理这个话题几乎每周都有人问。特别是机械硬盘时代的旧电脑或者C盘只分了80G的笔记本动不动就弹出“磁盘空间不足”。我这个习惯每隔几个月就要帮同事朋友清理一轮C盘的人最烦的不是C盘满而是那些号称免费的C盘清理软件——装完以后C盘不仅没瘦多少反而多了两三个全家桶后台进程一排风扇呼呼转。后来我把方案固定下来了一个小到只有1MB出头的绿色扫描工具加上两条Windows自带的命令就能把C盘里真正占地方的大文件“整体搬走”而且搬完之后所有软件照常使用不需要重装不需要改配置。这套方法我用了五六年从Win7用到Win11从笔记本用到台式机实测下来非常稳比那些“一键清理大师”靠谱得多。适合谁看如果你C盘经常飘红又不想用那些动不动就要勾选“安装扩展工具”的清理软件或者你已经试过各种清理软件但空间还是没涨多少这篇文章就是写给你的。我会把工具选型、操作步骤、原理和坑全部讲清楚你照着抄作业就行。2. 占用C盘空间的到底是谁2.1 真正吃空间的是那几类“大块头”很多人一看到C盘红了第一反应就是“清垃圾”。但说实话浏览器缓存、系统临时文件这些撑死也就几个G。真正让C盘爆满的永远是下面这几类东西微信和企业微信的聊天记录、图片、视频缓存。现在的微信你在聊天框里看过一张图它可能就给你缓存下来一个群聊消息密集的话一个月下来几个G是常态。游戏和大型软件的安装目录。Steam默认装到C盘动辄几十GAdobe全家桶的缓存目录也特别夸张。休眠文件hiberfil.sys。这个文件默认等于你内存大小的75%左右16G内存就是12G而且它在C盘根目录看不见摸不着。虚拟内存文件pagefile.sys默认大小通常为物理内存的1到1.5倍24G内存的机器上这个文件就是24G往上。C盘上安装的其他程序的数据目录比如MySQL、VMware、Docker之类的这些程序的数据文件体积增长最凶。看清楚这些之后你就明白为什么市面上那些“免费C盘清理工具”大多没啥效果了。它们清理的是历史缓存和临时文件属于“碎银子”而真正的“大金砖”是那些数据文件、软件缓存目录这些东西普通清理工具根本不敢动也动不了。2.2 为什么单纯“删文件”不是长久之计你可能会问既然是微信占了几个G那我直接在设置里把微信文件存储位置改到D盘不就行了这是个办法但不完整。第一已经产生的那部分历史文件微信设置里面“迁移”功能经常迁移不干净有一部分残留还在C盘第二很多软件压根没有“更改存储位置”这个选项。比如某些企业IM、某些设计软件它们的数据目录就直接写死在系统盘的用户目录里第三有一类程序即使官方提供了改存储位置的入口改完之后你还是能发现C盘空间继续在减少因为它的缓存目录写在别的地方。这种情况下最干净利落、最通用的思路就四个字整目录搬家。把系统盘里的某个大目录连文件带目录结构一起搬到D盘然后在原来的位置留一个“快捷方式”让程序和系统都以为该目录还在原地。这个“快捷方式”在Windows里有一个专业术语叫目录联接Directory Junction。3. 工具选型和方案原理为什么这套行得通3.1 一个1MB的绿色工具加两条命令我平时用到的小工具叫SpaceSniffer官方那个单文件exe大小也就1MB出头不需要安装双击就能跑。它不是清理工具而是一个可视化磁盘分析工具可以把磁盘里每个文件夹占用的空间大小用方块图的形式画出来看一眼就知道C盘里哪些文件夹是“大金砖”。真正动手搬家的命令是Windows自带的两条robocopy用来复制文件和目录mklink用来在原本的位置创建目录联接。整套方案就是SpaceSniffer扫描C盘定位大目录用 robocopy 把该目录完整复制到D盘用 mklink /J 在C盘原位置创建一个目录联接验证没问题后用 robocopy 加参数把C盘原目录清掉不建议直接用“剪切粘贴”因为文件太多的时候资源管理器复制到一半如果卡了要么整个目录状态不明确要么提示各种等待重试窗口。robocopy是命令行工具断点了可以继续进度可控比较适合大数据量搬迁。3.2 目录联接的原理用一句话解释Windows有两种链接方式一个是符号链接Symbolic Link一个是目录联接Junction。mklink /J创建的就是目录联接。这玩意儿有多好用呢如果你的C盘有这样一个路径C:\Users\你的用户名\Documents\WeChat Files你把它整个搬到D盘去变成D:\AppData\WeChat Files然后在C盘原位置执行mklink /J C:\Users\你的用户名\Documents\WeChat Files D:\AppData\WeChat Files这样之后任何程序去访问C盘那个路径Windows会直接帮你把请求转到D盘的实际目录。对于应用程序和用户来说C盘原路径依然有效文件还在原路径下只是物理存储位置变了。你可以把它理解成大学宿舍楼里的“同宿舍改名”你和舍友换了房间但门上的号牌没变快递员按老号码找到的还是你。这个机制是Windows NTFS文件系统级别的功能已经稳定存在了二十多年不是第三方软件搞的野路子。很多程序员会用这个办法把npm全局包目录、pip缓存目录迁出C盘本质上就是同一招。只要你别在没创建联接之前就删掉原目录基本不会有风险。4. 实操过程从扫描到搬迁手把手带你走一遍4.1 第一步用SpaceSniffer找出C盘的“大金砖”先在官网或者正规软件站下载SpaceSniffer解压后是一个单文件exe1~2MB大小。以管理员身份运行选中C盘点击开始扫描。扫描速度非常快通常在几秒钟到半分钟之内就能把整个C盘的空间分布展示出来。你会看到屏幕上出现一个个方块每个方块代表一个文件夹方块越大说明这个目录占的空间越大。重点看这几个路径C:\Users\用户名\AppData微信、浏览器的数据常驻区C:\Users\用户名\Documents很多人把聊天记录放在这里C:\Users\用户名\Downloads下载目录常年累积C:\Program Files和C:\Program Files (x86)大型软件的安装目录C:\Users\用户名.cache、.npm、.gradle之类带点的隐藏目录开发者才会遇到我的习惯是扫描完之后按“大小排序”直观地找那个最大的方块然后顺着方块往下钻。比如我看到一个叫“AppData”的方块特别大点进去再点“Local”再点“Tencent”就能很清楚地确认“微信缓存”到底占了多少。这一步的目的不是让你删而是让你心中有数什么东西值得搬什么东西不值得搬。4.2 第二步用robocopy把目录搬到D盘假设你已经定位到了一个大目录比如微信文件C:\Users\张三\Documents\WeChat Files下一步不是直接砍它而是先把整个目录完整复制到D盘。先创建一个目标目录比如mkdir D:\AppData\WeChat Files然后执行robocopy完整复制robocopy C:\Users\张三\Documents\WeChat Files D:\AppData\WeChat Files /E /COPYALL /DCOPY:DAT /R:1 /W:1 /MT:16参数解释一下/E 表示复制所有子目录包括空目录/COPYALL 表示复制所有文件信息包括文件属性、时间戳、安全权限这一步很重要否则某些软件会提示文件不可用/DCOPY:DAT 表示复制目录信息/R:1 和 /W:1 分别表示文件复制失败时重试1次、等待1秒避免复制卡在网络或软锁文件上/MT:16 表示16线程并行复制数据量大的时候速度快得明显这个复制过程可能需要几分钟取决于目录大小。复制完以后先别急着删C盘原目录我们先做验证。4.3 第三步用mklink让程序找到新位置复制完成后把原目录改名备份一下。这里非常关键你要给C盘原目录改名而不是直接删除因为万一后面出问题你还能改回来。先在C盘原路径下执行ren C:\Users\张三\Documents\WeChat Files WeChat Files_old然后创建目录联接mklink /J C:\Users\张三\Documents\WeChat Files D:\AppData\WeChat Files创建成功后会显示一条信息大意是“为 C:... D:... 创建的联接”。此时你打开C盘原路径会发现里面的文件依然“在”但其实它们已经在D盘了。这时候启动微信随便翻一翻一个月前的聊天记录确认图片能正常加载、文件能正常打开。验证无误后再把那个改名为“WeChat Files_old”的原始目录删掉。如果空间还不够可以用robocopy顺手清空原目录再删除robocopy C:\Users\张三\Documents\WeChat Files_old D:\AppData\empty /MIR这一步利用robocopy的镜像合并功能把C盘那个“旧目录”里的内容全部清空然后手动删除旧目录即可。这里要特别提醒目录联接创建之后不要再尝试通过删除C盘路径里的文件来释放空间。你以为删了实际删的是D盘的文件。要清理就进真实物理路径里清理。4.4 哪些目录值得搬哪些不值得根据我的经验按优先级推荐搬家对象微信/企业微信/QQ的聊天记录目录占用大、增长快、可迁移性强浏览器缓存目录比如Chrome的User Data如果它已经膨胀到几个GDocker Desktop和WSL2的虚拟磁盘文件这俩单个就是几十G的vhd文件游戏平台的默认安装目录比如Steam、Epic可以把“库”路径改到别的盘开发相关的缓存目录比如npm-cache、pip cache、Gradle的缓存目录临时目录C:\Windows\Temp可以清理但不要搬迁整个Windows目录不值得搬的有C:\Windows下面的系统文件、Program Files里面频繁更新且依赖注册表的软件目录。这类东西如果手动搬家Windows更新或者软件更新时可能找不到路径导致更新失败。尤其是NVIDIA显卡驱动这类核心组件它安装的时候会往C盘写入大量临时文件如果这批临时文件被转移驱动更新会直接报C盘空间不足。驱动更新失败的问题用我上面的思路去处理迁走微信等大文件释放空间比动驱动目录安全得多。5. 常见问题与排查技巧实录5.1 迁移之后C盘空间为什么没变大这是新手最容易踩的坑。原因一般有两个第一你没删旧目录。很多人做完robocopy复制和mklink之后就把这事当完了原目录还躺在C盘里白白占着空间。记住mklink只是“指路”它不会自动帮你删原数据必须手动删掉原目录通常也就是把“WeChat Files_old”这样的备份目录清理掉。第二某些目录处于隐藏或系统保护状态。AppData目录默认隐藏你复制的时候如果想省事直接在资源管理器里右键“复制”很多时候复制出来缺失文件、权限错乱。所以复制一定用robocopy尤其是/COPYALL这个参数能保留NTFS权限和文件属性。还有一种情况你自己复制的程序启动后找不到数据很可能是mklink创建的时候路径中间有空格或者你用了不带引号的路径。务必把路径用双引号包上。5.2 迁移之后软件闪退或者找不到数据如果你严格按照robocopy复制、改名、然后再创建联接的操作顺序来这种问题很少发生。万一真发生了先不要慌把C盘原位置的“_old”目录名字改回去等于一键回滚软件就能恢复到搬家前的状态。如果真的出现闪退大部分情况是你用资源管理器手动复制导致的文件权限丢失。解决方法是删掉D盘复制错乱的数据重新用robocopy带/COPYALL跑一遍然后重新建联接。每次搬家之前先把微信、浏览器、数据库这些正在运行的进程关闭避免文件被占用、复制不完整。另外要提醒一点创建目录联接时要用管理员身份的CMD或者PowerShell否则某些系统目录上会提示“拒绝访问”。快捷键是WinX然后选择“终端(管理员)”或“命令提示符(管理员)”。5.3 关于C盘扩容的一个建议有不少人喜欢折腾C盘扩容看到热搜词里“c盘扩容”“恢复分区在C盘后面”这类话题很多这里多说一句。如果你C盘后面的那个分区是相邻的未分配空间用DiskGenius、傲梅分区助手这类工具无损扩容是可行的。但如果你的恢复分区恰好挡在C盘和空余空间中间强烈不建议自己删恢复分区来腾路——万一系统出问题你没有恢复环境后面麻烦会远大于那几十G空间带来的收益。正规靠谱的顺序是先用我前面说的“搬大目录”思路释放空间如果还不够用再考虑用官方磁盘管理工具删除不需要的分区来扩容。不到万不得已别动恢复分区别用市面上那些“一键扩容”的野路子软件很多扩容工具在重启过程中出了岔子直接把分区表搞坏得不偿失。6. 这套方法到底能省出多少空间我举个上个月的实例。同事的笔记本C盘一共120GB系统占了40GB微信和聊天记录占了35GBSteam游戏占了25GB剩下的一堆软件和缓存把空间压到还剩不到4GB。我用SpaceSniffer扫描后先把微信文件整体搬到了D盘释放35GB再把Steam的库目录搬走释放25GB顺手清了Windows临时文件和休眠文件又拿回5GB。整个过程花了不到半小时C盘可用空间从3.8GB涨到接近70GB。期间Steam迁移后重新设置了一次库路径微信迁移后连登录状态都还在。这个方案对个人电脑、办公电脑都适用而且完全免费、不需要安装任何第三方“清理大师”。如果你把微信、浏览器缓存、Steam库这三类最常拖累C盘的东西都搬走普通人的C盘基本可以告别红色警报。最后再分享一个小技巧搬家完成后隔一两个月用SpaceSniffer再扫一次C盘重点看看哪些目录增长速度快。如果某个目录又涨出几个G说明这个应用自己写死了路径重复上面的流程再搬一次就行。这套玩法熟练之后处理一次C盘告急的时间不超过15分钟比到处找清理软件、挨个试错要高效得多。
返回列表