You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash环境下批量快速复制100K个文件夹的高效方法咨询

高效批量复制大量文件夹的解决方案

哈哈,这个问题我太有共鸣了!用while循环挨个跑cp确实会因为频繁启动进程拖慢速度——毕竟每执行一次cp就要创建一个新进程,10万个文件夹的话,进程创建的开销累加起来就恐怖了。给你几个亲测高效的方案:

1. 用xargs并行批量处理

xargs可以把文件里的路径批量传给cp,还能开启并行进程,大幅提升速度:

xargs -I {} -P 8 cp -R {} <dest_folder> < file_with_paths.txt
  • -I {}:用{}作为路径的占位符,替换成文件里的每一行内容
  • -P 8:启动8个并行的cp进程,你可以根据自己的硬件调整(SSD磁盘可以设12-16,机械硬盘别超过4-6,避免IO瓶颈)

2. 用rsync批量同步

rsync本身就比cp更高效,尤其是批量操作时,它会优化文件传输逻辑,还支持断点续传:

rsync -av --files-from=file_with_paths.txt / <dest_folder>

注意:file_with_paths.txt里最好写绝对路径,这样rsync能准确找到源文件;如果是相对路径,要确保当前工作目录是这些路径的基准目录。-av参数表示归档模式(保留权限、时间戳等)+ 详细输出。

3. 用tar打包流直接解压

如果你的源目录和目标目录在不同存储设备上,用tar打包成数据流再解压,能减少零散文件的IO开销:

tar -c -T file_with_paths.txt | tar -x -C <dest_folder>
  • -c:创建打包流
  • -T file_with_paths.txt:指定要打包的路径列表
  • 管道后面的tar -x -C <dest_folder>:把打包流直接解压到目标目录,全程没有中间临时文件,效率拉满

小提醒

  • 并行操作时别贪多,机械硬盘的IO吞吐量有限,开太多并行进程反而会因为IO阻塞变慢
  • 操作前先拿几个文件夹测试一下命令,确保路径和参数正确,避免误操作

内容的提问来源于stack exchange,提问作者London guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:26:20