dd 是 Linux 常用的指令, 可以做各種直接複製的工作, 例如:
dd if=/dev/sda of=/dev/sdb
這樣可以進行硬碟對拷.
而硬碟對拷時, 有兩個參數比較常用:
- conv=noerror : 如果硬碟有壞軌時, 系統會出現讀取異常而中斷, 加上 conv=noerror 參數, 即使有壞軌, 也會繼續複製.
- bs=(單位) : 這個參數是用來指定每次讀寫的區塊大小(block size), 這邊就要依情況選擇.
個人對 bs= 的量, 有兩個原則:
- 如果硬碟已經有壞軌, 則 bs= 的單位量最好與硬碟實體的磁區(Sector)一樣: 因為硬碟是以磁區為單位, 有壞軌也是以磁區為單位, 如果 bs= 的單位比磁區大, 複製時會跳過其他還能讀取的磁區. 所以硬碟有壞軌時, 個人習慣用一樣的大小.
- 如果硬碟沒有壞軌, 則 bs= 設定為硬碟快取記憶體的一半: 例如硬碟有 8M 與 16M 的快取, 個人會取 8M 的一半, 用 bs=4M 進行複製; 因為一般的記憶體晶片是以 2 的次方為單位, 不過控制晶片可能會有占用一小部分用在其他資料. 所以個人習慣用一半, 滿足 2 的次方, 又能盡量填滿後再一次寫入.