在Linux系统下,如何通过命令行工具测试文件传输速度?

Linux系统中,准确测量文件传输速度需要综合考虑网络环境、磁盘性能、系统负载等多方面因素,选择合适的工具和方法才能获得可靠结果,以下是详细的测速思路、工具使用及注意事项。

如何测linux传输文件的速度

影响文件传输速度的关键因素

在开始测速前,需了解可能影响结果的核心因素,以便排除干扰、精准定位瓶颈:

  1. 网络环境:带宽(如千兆/万兆)、延迟、丢包率,以及是否跨网段(局域网/公网)。
  2. 磁盘性能:本地/远程磁盘类型(HDD/SSD/NVMe)、文件系统(ext4/XFS)、IO调度算法(noop/deadline)。
  3. 系统负载:CPU占用率、内存可用性、后台进程(如杀毒软件、日志服务)。
  4. 传输协议:TCP(默认可靠但开销大)、UDP(无连接但需确保丢包容忍)、优化选项(如TCP拥塞控制算法)。

常用文件传输速度测量工具及实操

Linux下测速工具可分为本地磁盘测速、网络传输测速两类,需根据场景选择。

(一)本地磁盘文件传输速度测量(读写性能)

若需测试本地磁盘(如U盘、硬盘、SSD)的读写速度,可使用dd命令(需谨慎使用,避免误删数据)。

基础命令示例

# 测试顺序写入速度(写1GB文件,块大小1MB,直接IO绕过缓存)
dd if=/dev/zero of=./testfile bs=1M count=1024 oflag=direct status=progress
# 测试顺序读取速度(从testfile读取,块大小1MB,直接IO)
dd if=./testfile of=/dev/null bs=1M iflag=direct status=progress
# 清理测试文件(重要!)
rm -f ./testfile

参数说明

  • if/of:输入/输出文件(/dev/zero为虚拟数据源,/dev/null为数据黑洞)。
  • bs:块大小(建议1M~1G,过小可能受系统调用开销影响,过大可能占用过多内存)。
  • count:块数量(1024×1M=1GB)。
  • oflag=direct/iflag=direct:绕过系统缓存,直接IO,避免缓存干扰(测纯磁盘性能)。
  • status=progress:实时显示传输速度和耗时。

结果解读:命令结束后会显示“copied XXX MB, XXX s, XXX MB/s”,XXX MB/s”即为传输速度。

如何测linux传输文件的速度

(二)网络文件传输速度测量(局域网/公网)

网络传输需区分“本地到远程”和“远程到本地”,常用工具包括rsyncscpiperf3speedtest-cli等。

rsync:带进度和速度统计的文件同步(适合大文件/目录)

# 本地->远程(显示进度,压缩传输,统计速度)
rsync -avz --progress /local/path/ user@remote_ip:/remote/path/
# 远程->本地(同上)
rsync -avz --progress user@remote_ip:/remote/path/ /local/path/
# 参数说明:
# -a:归档模式(保留权限、时间戳等)
# -v:详细输出
# -z:压缩传输(减少带宽占用,适合小文件)
# --progress:显示实时传输速度和进度

结果解读:传输过程中会实时显示“speedup is XXX”和“sent XXX bytes/sec”,最终以“sent XXX bytes received XXX bytes XXX.XX bytes/sec”中的“bytes/sec”为准(除以1024得KB/s,再除以1024得MB/s)。

scp:基于SSH的安全文件传输(适合单文件/小批量)

# 本地->远程(显示传输进度,需手动计算速度)
scp -v /local/file.txt user@remote_ip:/remote/path/
# 参数说明:
# -v:详细模式(显示连接、认证、传输过程,可用于日志分析)

结果解读-v模式下会打印“Sending file modes: …”,但需结合传输时间和文件大小手动计算速度(速度=文件大小/传输时间)。

iperf3:专业网络带宽测试工具(测纯网络吞吐量)

需在服务端和客户端分别安装(sudo apt install iperf3/sudo yum install iperf3)。

服务端(远程机器)

iperf3 -s -p 5201  # 监听5201端口(默认)

客户端(本地机器)

如何测linux传输文件的速度

# 测试上传速度(本地->远程)
iperf3 -c remote_ip -p 5201 -t 10 -J
# 测试下载速度(远程->本地)
iperf3 -c remote_ip -p 5201 -R -t 10 -J
# 参数说明:
# -c:客户端模式,指定服务端IP
# -p:端口(默认5201,需与服务端一致)
# -t:测试时长(秒,默认10秒,建议≥10秒减少波动)
# -R:反向测试(下载速度)
# -J:JSON格式输出(方便解析,可省略看简略结果)

结果解读:结果中“Sum received”为下载速度,“Sum sent”为上传速度,单位为“bits/s”(需除以8得bytes/s,再除以1024/1024得MB/s)。

speedtest-cli:公网测速(测到运营商服务器的速度)

# 安装(Python环境)
sudo apt install speedtest-cli  # Debian/Ubuntu
sudo yum install speedtest-cli  # CentOS/RHEL
# 运行测速(自动选择最近服务器)
speedtest-cli
# 指定服务器ID(通过speedtest-cli --list查看)
speedtest-cli --server 12345

结果解读:直接显示“Download”和“Upload”速度(单位Mbps),以及“Ping”延迟(ms)。

(三)工具对比与选择

工具名称 适用场景 优点 缺点
dd 本地磁盘读写性能测试 简单直接,系统自带 仅限本地,需手动清理测试文件
rsync 网络文件/目录同步(大文件) 支持增量、压缩、进度显示 依赖SSH,小文件开销大
scp 网络单文件传输(小批量) 基于SSH安全,简单易用 无实时速度显示,需手动计算
iperf3 纯网络吞吐量测试 专业精准,支持双向/反向测试 需服务端配合,不测文件层面
speedtest-cli 公网带宽测试 自动选服务器,支持运营商测速 依赖外部服务器,结果受网络波动

测速注意事项

  1. 多次测试取平均:单次测试可能受系统瞬时负载影响,建议重复3~5次取平均值。
  2. 关闭后台干扰:测速前关闭不必要的进程(如sudo systemctl stop cupskillall firefox),避免CPU/IO占用。
  3. 文件大小选择:小文件(<1MB)受系统调用开销影响,大文件(≥1GB)更能反映真实速度,但需考虑磁盘空间。
  4. 网络稳定性:局域网测速建议用网线直连(避免Wi-Fi干扰),公网测速选择闲时(如凌晨)减少拥塞。

相关问答FAQs

问题1:为什么用dd命令测本地磁盘速度时,结果远低于理论值(如SSD标称500MB/s,实测仅50MB/s)?
解答:可能原因包括:①未使用oflag=direct/iflag=direct,导致系统缓存参与,测的是缓存速度而非磁盘真实速度;②块大小(bs)设置过小(如默认512B),系统调用开销大;③磁盘本身性能不足(如HDD机械硬盘)或文件系统未优化(如ext4未开启noatime);④系统负载高(如后台程序占用IO),建议调整命令为dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct status=progress,并关闭后台进程再测试。

问题2:测文件传输速度时,选择多大的文件比较合适?文件大小对结果影响大吗?
解答:文件大小直接影响结果的准确性:①小文件(如KB级):传输时间短,系统调用、网络握手等固定开销占比高,结果可能偏低且波动大;②中等文件(如100MB~1GB):能较好平衡开销和真实速度,适合常规测试;③大文件(如1GB以上):传输时间长,固定开销可忽略,结果更接近实际吞吐量,但需确保磁盘空间充足,建议根据场景选择:本地磁盘测速用1GB以上,局域网传输用100MB~1GB,公网小文件传输用10MB~100MB,并多次测试取平均。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31270.html

(0)
酷番叔酷番叔
上一篇 2025年9月27日 14:16
下一篇 2025年9月27日 14:52

相关推荐

  • linux如何调出quartus

    Linux中,可以通过命令行输入quartus来调出Quartus软件,前提是

    2025年8月13日
    10900
  • Linux系统如何支持触摸屏电脑?

    Linux系统对触摸屏电脑的支持已日趋成熟,从内核驱动到桌面环境均形成了完整的解决方案,本文将从底层机制、硬件识别、配置方法、桌面优化及常见问题解决等方面,详细阐述Linux如何支持触摸屏操作,Linux触摸屏支持的底层机制Linux对触摸屏的支持基于其输入子系统(Input Subsystem),该子系统负责……

    2025年9月25日
    9100
  • Linux系统中打开文件,命令行和图形界面的具体操作步骤是什么?

    在Linux系统中,打开文件的方式多样,可根据文件类型、使用场景(图形界面或命令行)及个人习惯选择,无论是简单的文本查看还是复杂的二进制文件处理,Linux都提供了灵活的工具支持,以下从图形界面和命令行两个维度,详细介绍打开文件的方法及常用命令,图形界面打开文件对于习惯图形界面的用户,Linux桌面环境(如GN……

    2025年9月20日
    10900
  • 如何用cut命令选择第3和第5字段?

    核心语法cut -d '分隔符' -f 3,5 文件名-d:指定字段分隔符(默认是制表符\t),-f:指定要提取的字段位置,用逗号分隔不连续的字段(如3,5),操作步骤与示例示例1:基本用法(以空格分隔)假设文件data.txt内容如下:Alice 25 Engineer USA 5000Bob……

    2025年7月12日
    11700
  • Linux系统挂载硬盘的具体操作步骤与注意事项有哪些?

    在Linux系统中,挂载硬盘是将存储设备(如硬盘、U盘等)的文件系统关联到指定目录的过程,使用户能够通过目录访问设备中的数据,以下是详细的Linux硬盘挂载步骤及注意事项,涵盖从识别硬盘到配置自动挂载的全流程,识别硬盘设备挂载前需先确认系统中的硬盘设备及其分区信息,Linux中硬盘设备通常表示为/dev/sdX……

    2025年9月30日
    9700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信