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

如何用GNU Parallel等工具并行从远程服务器复制大量小文件?

当然可以!并行复制这类小文件集群绝对能大幅提升效率,下面给你两种靠谱的方案:

方案一:用GNU Parallel实现并行SCP

GNU Parallel就是专门干这种批量并行任务的神器,完美适配你的场景。

基础用法(适合文件名无特殊字符的情况)

先通过SSH获取远程服务器上的目标文件列表,再交给Parallel同时启动多个SCP进程:

ssh goldy@machineA 'ls /process/snap/20180418/*.dat' | parallel -j 5 scp goldy@machineA:{} /data/files/
  • -j 5:指定同时运行5个复制进程,你可以根据网络带宽和服务器负载调整这个数字(比如改成8或者10,别太夸张就行)。
  • 这里用SSH远程列文件,是为了避免本地终端解析远程的通配符,确保能准确拿到所有目标文件。

安全用法(处理含空格/特殊字符的文件名)

如果你的文件名里有空格、引号这类特殊字符,用find配合空字符分隔会更稳妥:

ssh goldy@machineA 'find /process/snap/20180418 -maxdepth 1 -name "*.dat" -print0' | parallel -0 -j 5 scp goldy@machineA:{} /data/files/
  • -print0和-0:让find和Parallel用空字符分隔文件名,彻底避免特殊字符导致的错误。

方案二:用rsync的并行模式(更省心的选择)

其实rsync从3.1.0版本开始就支持并行传输了,它不仅能并行复制,还自带增量同步、断点续传的功能,对于批量文件来说有时候比SCP+Parallel更省心:

rsync -avz --parallel=5 goldy@machineA:/process/snap/20180418/ /data/files/
  • -a:归档模式,保留文件权限、时间戳等属性;-v:显示详细日志;-z:传输时压缩数据(如果是本地局域网可以去掉,节省CPU)。
  • --parallel=5:指定并行传输的进程数,和Parallel的-j参数作用一致。

一些小提示

  1. 并发数别设太高:比如一下子开20个进程,可能会把远程服务器的带宽占满,甚至触发SSH连接限制,5-10个是比较稳妥的起步值。
  2. 优先选rsync:如果是第一次复制或者后续需要增量更新,rsync的效率和容错性都更强;如果只是单纯一次性复制,Parallel+SCP也完全够用。
  3. 检查工具是否安装:GNU Parallel默认可能没装,你可以用apt install parallel(Debian/Ubuntu)或者yum install parallel(CentOS/RHEL)快速安装;rsync一般系统都会自带,用rsync --version检查是否支持--parallel参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:32:05