关于利用rsync测试存储受限的服务器A向服务器B传输大流量网络速度的方案咨询
利用rsync测试存储受限的服务器A向服务器B传输大流量网络速度的方案咨询
这个问题我之前帮朋友处理过类似的,刚好有几个实用的方案能完美匹配你的需求,完全不用纠结A的磁盘空间限制:
直接流式生成数据并传输(最推荐)
你可以用dd从A的/dev/zero(一个无限生成零字节的虚拟设备)生成指定大小的数据流,直接通过SSH管道传到B,B端直接把数据丢进/dev/null(不存储任何内容),全程不会占用A的磁盘空间。命令示例:# 生成1TB的数据流并传输到B,B端直接丢弃数据 dd if=/dev/zero bs=1M count=1024000 | ssh your_user@serverB 'cat > /dev/null'要是B需要密码登录,你可以手动输入密码(SSH会自动弹出提示);如果想避免交互(适合脚本批量测试),可以用
sshpass(注意:密码会明文暴露,仅在安全环境下使用):dd if=/dev/zero bs=1M count=1024000 | sshpass -p 'your_b_server_password' ssh your_user@serverB 'cat > /dev/null'你还可以调整
bs(块大小)和count(块数量)来控制总数据量,比如count=2048000就是2TB,足够让你测试足够长时间的稳定传输速度。结合rsync的流式传输方案
如果你更习惯用rsync,也可以让它读取标准输入的数据流再传输,同样不会占用A的磁盘:dd if=/dev/zero bs=1M count=1024000 | rsync --progress - your_user@serverB:/dev/null这里的
-表示rsync从标准输入读取数据,--progress参数能让你看到实时的传输进度和速度。补充:实时监控传输速度
要是想直观看到动态的传输速率、已传输量,可以加个pv工具(大部分Linux发行版可通过包管理器安装):dd if=/dev/zero bs=1M count=1024000 | pv | ssh your_user@serverB 'cat > /dev/null'这样你就能在A的终端看到实时的速度统计,方便判断传输的稳定性。
关于你提到的反向传输(B→A到/dev/null),这个方案确实可行,但既然你偏好A→B的方向,上面的流式方案完全能满足需求,而且不需要改动任何服务器的存储配置。
备注:内容来源于stack exchange,提问作者philshem
相关产品推荐
相关产品推荐

