Dd

使用 dd 命令僅讀取 1GB

  • November 19, 2016

我有一個 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 命令。

您的命令不正確,您告訴dd讀取 1 GB 塊,但次數不受限制。要僅測量讀取 ​​1 GB 所花費的時間,您需要告訴dd只讀取一個塊:

dd if=/dev/sdb1 of=/dev/null bs=1G count=1

請注意,如果先前已讀取設備,則緩衝將使該命令執行得更快。

首先,正如@jiliagre 所說,您正在測量整個分區(31 Gb)的傳輸時間,而不是 1 Gb。輸出的最後一行顯示了這一點:

30751983616 字節(31 GB)已複製,331.297 秒,92.8 MB/秒

其次,由於您正在寫入/dev/null數據並因此對數據進行黑洞化,因此它只會為您提供 USB 驅動器的讀取時間。

實際 I/O 傳輸時間將受目標設備的寫入速度容量限制,並且很可能會更慢。

此外,這取決於您要複製的數據。1 Gb 小文件的複制速度比單個 1 Gb 文件慢,並且由於分配文件的大小而在設備中佔用更多空間。

引用自:https://unix.stackexchange.com/questions/324215