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
集群调用
选项参数
连接控制参数
| 选项 | 参数 | 默认值 | 说明 |
|---|
-n | NR_CONNECTIONS | floor(log(cores)*2)+1 | 并行连接数 |
-u | MAX_STARTUPS | 8 | 并发未认证连接数 |
-I | INTERVAL | 0 | 连接尝试间隔(秒) |
-4 | - | - | 强制使用 IPv4 |
-6 | - | - | 强制使用 IPv6 |
-N | - | - | 启用 Nagle 算法 |
传输优化参数
| 选项 | 参数 | 默认值 | 说明 |
|---|
-s | MIN_CHUNK_SIZE | 16M | 最小分块大小 |
-S | MAX_CHUNK_SIZE | 文件大小/连接数/4 | 最大分块大小 |
-a | NR_AHEAD | 32 | 并行 SFTP 命令数 |
-b | BUF_SIZE | 16384 | 缓冲区大小 |
-L | LIMIT_BITRATE | 0(无限制) | 带宽限制 |
断点续传参数
| 选项 | 参数 | 说明 |
|---|
-W | CHECKPOINT | 保存传输状态到检查点文件 |
-R | CHECKPOINT | 从检查点文件恢复传输 |
SSH 配置参数
| 选项 | 参数 | 说明 |
|---|
-l | LOGIN_NAME | 远程登录用户名 |
-P | PORT | SSH 端口号 |
-F | SSH_CONFIG | SSH 配置文件路径 |
-i | IDENTITY | 身份认证文件 |
-J | DESTINATION | ProxyJump 跳转主机 |
-o | SSH_OPTION | SSH 配置选项 |
加密与压缩
调试与输出
| 选项 | 说明 |
|---|
-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 | 静默模式,支持断点续传 |
本文阅读量 次
本站总访问量 次