Windows 大量小文件复制太慢?使用 Robocopy 多线程加速

1. 背景

最近由于 C 盘空间不足,准备将 C 盘从 200GB 扩容到 350GB,同时保留原有的 D、E 盘。

考虑到不想使用第三方分区工具,便采用了比较直接的"笨方法":先将 D 盘文件临时移动到 E 盘,再通过 Windows 自带的磁盘管理工具删除并重建 D 分区,将其中 150GB 分配给 C 盘,最后把文件恢复到 D 盘。

原本以为几十 GB 的文件很快就能移动完成,结果 D 盘包含大量 Python、Conda、Git 等软件和开发环境文件,总计约 92 万个文件,使用 Windows 资源管理器移动了 2 小时才完成 40%。

完成分区调整后,考虑到还需要将这些文件从 E 盘复制回 D 盘,便尝试使用 Windows 自带的 Robocopy 多线程复制工具。实际使用后发现,复制速度明显提升,省去了大量等待时间。

因此,简单记录一下 Robocopy 的使用方法,方便以后迁移大量小文件时参考。

2. Robocopy 多线程复制

Robocopy 是 Windows 自带的文件复制工具,无需额外安装。

打开 PowerShell,执行:

复制代码
robocopy "E:\D" "D:\" /E /MT:16 /R:1 /W:1 /XJ /COPY:DAT /DCOPY:DAT /NP

其中,E:\D 是源目录,D:\ 是目标目录,根据实际情况修改即可。

参数说明

参数 作用
/E 复制所有子目录,包括空目录
/MT:16 启用 16 个线程并行复制
/R:1 失败后重试 1 次
/W:1 重试等待 1 秒
/XJ 排除目录联接点,避免递归复制
/COPY:DAT 保留文件数据、属性和时间戳
/DCOPY:DAT 保留目录数据、属性和时间戳
/NP 不显示逐文件复制百分比

核心参数是 /MT:16 ,可以根据设备性能调整线程数量,例如 /MT:8、/MT:16、/MT:32。

线程数并非越大越快,尤其是同一块硬盘内复制时,需要根据实际情况选择。

3. 检查复制结果

复制完成后,Robocopy 会输出统计信息:

复制代码
               Total    Copied   Skipped  Mismatch    FAILED
    Dirs :     ...
   Files :     ...
   Bytes :     ...

重点检查 FAILED 是否为 0。

还可以执行以下命令检查是否存在需要补复制的文件:

复制代码
robocopy "E:\D" "D:\" /E /L /R:0 /W:0 /XJ /COPY:DAT /DCOPY:DAT /NP

其中 /L 表示仅检查,不实际复制。

注意,该检查主要比较文件大小、修改时间等信息,并非逐文件哈希校验。

4. 总结

这次磁盘扩容过程中最大的感受是:

复制大量小文件时,文件数量对速度的影响可能比文件总大小更明显。

对于包含几十万甚至上百万个小文件的目录,使用 Robocopy 多线程复制通常更高效。

另外,Robocopy 默认执行复制操作,不会删除源文件。建议确认文件完整后,再手动清理临时备份。

以后遇到 Python 环境、Conda 依赖、Git 仓库等大量小文件迁移,可以优先尝试 Robocopy。

相关推荐
一木 之林12 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
箓维17 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手17 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
星恒随风18 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
智学AI20 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
叼烟扛炮20 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_4481199420 小时前
Datawhale Jev Cookbook 202610 笔记5
笔记
一木 之林21 小时前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify
ljt272496066121 小时前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
芯思路21 小时前
STM32开发学习笔记之十【AI部署】
笔记·stm32·学习