跳转至

mscp

软件简介

mscp(Multi-connection SCP)是一个开源的多连接并行文件传输工具,基于 libssh 开发。它通过建立多个并行的 SSH/SFTP 连接来加速文件传输,特别适合大文件和大量文件的传输场景。

传统 scp 使用单连接传输,受限于 TCP 的单流性能。mscp 通过多连接并行传输,充分利用网络带宽,特别是在高延迟网络中表现优异。mscp 自动将大文件分割为多个块,每个块通过独立的连接传输(sftp)。mscp 也可以同时传输多个文件。

项目地址 https://github.com/openssh/openssh-portable


安装

下载预编译二进制文件

$ wget https://github.com/upa/mscp/releases/download/v0.2.2/mscp.linux.x86_64.static
$ mv mscp.linux.x86_64.static mscp
$ chmod +x mscp
$ ./mscp -h

集群调用

$ module load mscp/0.2.2

选项参数

连接控制参数

选项参数默认值说明
-nNR_CONNECTIONSfloor(log(cores)*2)+1并行连接数
-uMAX_STARTUPS8并发未认证连接数
-IINTERVAL0连接尝试间隔(秒)
-4--强制使用 IPv4
-6--强制使用 IPv6
-N--启用 Nagle 算法

传输优化参数

选项参数默认值说明
-sMIN_CHUNK_SIZE16M最小分块大小
-SMAX_CHUNK_SIZE文件大小/连接数/4最大分块大小
-aNR_AHEAD32并行 SFTP 命令数
-bBUF_SIZE16384缓冲区大小
-LLIMIT_BITRATE0(无限制)带宽限制

断点续传参数

选项参数说明
-WCHECKPOINT保存传输状态到检查点文件
-RCHECKPOINT从检查点文件恢复传输

SSH 配置参数

选项参数说明
-lLOGIN_NAME远程登录用户名
-PPORTSSH 端口号
-FSSH_CONFIGSSH 配置文件路径
-iIDENTITY身份认证文件
-JDESTINATIONProxyJump 跳转主机
-oSSH_OPTIONSSH 配置选项

加密与压缩

选项参数可用值
-cCIPHERaes128-ctr, aes256-gcm@openssh.com
-MHMAChmac-sha2-256, hmac-sha2-512 等
-CCOMPRESSyes, no, zlib, zlib@openssh.com

调试与输出

选项说明
-v增加详细输出级别(可多次使用)
-q静默模式,禁用所有输出
-D干运行模式,仅检查不传输
-d增加 SSH 调试输出
-h显示帮助信息

文件处理

选项说明
-p保留文件时间戳和权限
-r无实际效果(仅为兼容性保留)

使用示例

# 传输单个文件
mscp document.pdf user@example.com:/home/user/

# 传输多个文件
mscp file1.txt file2.img file3.zip user@server:/path/

# 传输整个目录
mscp -r /local/directory/ user@server:/remote/path/

# 使用12个连接传输大文件
mscp -n 12 ubuntu-22.04.iso user@server:/iso/

# 指定分块大小
mscp -s 32M -S 256M large_video.mp4 user@server:/videos/

# 断点续传
# 开始传输并创建检查点
mscp -W backup.chk /backup/data.tar.gz user@backup-server:/storage/
# 传输中断后恢复,注意:需要在相同目录执行
mscp -R backup.chk

# 限制为50Mbps,避免影响其他服务
mscp -L 50M large_dataset.zip user@server:/data/

# 针对高延迟网络优化
mscp -n 16 -a 64 -I 0.1 file.iso user@remote-server:/path/

故障排除

常见问题及解决

1. 连接数过多被拒绝

# 错误:ssh_exchange_identification: Connection closed by remote host
# 解决:减少并发连接数或增加间隔
mscp -u 4 -I 0.5 file.txt user@server:/path/

2. 内存不足

# 错误:Cannot allocate memory
# 解决:减少连接数或缓冲区大小
mscp -n 4 -b 8192 largefile.bin user@server:/path/

3. 断点续传失败

# 检查点文件损坏或路径变化
# 重新生成检查点文件
mscp -W new_checkpoint.dat file.tar user@server:/path/

4. 权限问题

# 确保有正确的SSH密钥权限
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

# 使用密码认证(环境变量)
export MSCP_SSH_AUTH_PASSWORD="your_password"
mscp file.txt user@server:/path/

调试模式

# 增加详细输出
mscp -vvv file.txt user@server:/path/

# SSH调试信息
mscp -d -d file.txt user@server:/path/

# 干运行检查
mscp -D -vv file.txt user@server:/path/

优化建议表

场景推荐配置说明
高延迟网络-n 16 -a 64 -I 0.1增加并行度和流水线深度
低带宽网络-L [带宽的80%]避免拥塞,保证稳定性
大量小文件-n 8 -s 1M减少连接开销
超大文件-n 24 -s 64M -S 1G最大化并行度
后台传输-q -W checkpoint静默模式,支持断点续传
本文阅读量  次
本站总访问量  次