使用dd命令仅读取1GB

使用dd命令仅读取1GB

我有一个 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 文件慢,并且由于分配文件大小而占用设备中更多空间。

相关内容