![使用dd命令仅读取1GB](https://linux22.com/image/98957/%E4%BD%BF%E7%94%A8dd%E5%91%BD%E4%BB%A4%E4%BB%85%E8%AF%BB%E5%8F%961GB.png)
我有一个 32 GB 的 USB 硬盘,我想知道从 USB 驱动器复制 1 GB 数据需要多长时间。我尝试使用dd if=/dev/sdb1 of=/dev/null
输出是这样的
dd if=/dev/sdb1 of=/dev/null bs=1G
28+1 records in
28+1 records out
30751983616 bytes (31 GB) copied, 331.297 s, 92.8 MB/s
我使用的方法是正确的还是我做错了。我无法使用其他工具,我只能使用 dd 命令。
答案1
您的命令不正确,您告诉dd
读取 1 GB 块,但读取次数不限。要仅测量读取 1 GB 所花费的时间,您需要指示dd
只读取一个块:
dd if=/dev/sdb1 of=/dev/null bs=1G count=1
请注意,如果设备之前已被读取,缓冲将使该命令运行得更快。
答案2
首先,正如 @jiliagre 所说,您测量的是整个分区 (31 Gb) 的传输时间,而不是 1 Gb。输出的最后一行显示了这一点:
30751983616 字节 (31GB) 复制,331.297 秒,92.8 MB/秒
其次,由于您正在写入数据/dev/null
并因此黑洞化数据,因此它只为您提供 USB 驱动器的读取时间。
实际的 I/O 传输时间将受到目标设备的写入速度容量的限制,并且很可能会更慢。
此外,这取决于您要复制的数据。 1 Gb 小文件的复制速度比单个 1 Gb 文件慢,并且由于分配文件大小而占用设备中更多空间。