Linux

Mac OS X 和 Linux 中 dd 的區別

  • October 2, 2014

在使用 Linux (Debian) 時,我經常使用 dd 將磁碟映像複製到 SD 卡。如果“of”選項中指定的設備文件太大,我編寫了一個腳本,該腳本會引發錯誤。這可以防止我意外炸毀我的一個硬碟。

SD_SIZE=$(sudo sfdisk -s ${SD_DEV}) 
if [ $SD_SIZE -gt 33554432 ]; then
 echo "might not be and SD card, exiting"
 exit 1
fi

但是,如果我插入 SD 卡並忘記解除安裝它,結果就很粗略。有時復製成功,有時失敗。

我可以在這裡用答案修改我的腳本: 如何檢查文件系統是否安裝了腳本

但是, dd 中是否有具有此功能的選項?(在 OS X dd 預設情況下不會寫入已安裝的磁碟)

同樣有趣的是,為什麼在嘗試複製到已安裝的磁碟時會出現 dd(在 OS X 上)錯誤?也許核心或dd有一些差異?如果您嘗試 dd 到安裝在 OS X (10.9) 中的驅動器,則會出現以下錯誤:

dd: /dev/diskN: 資源繁忙,請確保磁碟未在使用中

我可以使用 cp 寫入磁碟,所以 dd 進行的系統呼叫可能不像 OPEN 然後 WRITE 那樣簡單。

有時復製成功,有時失敗。

可能它失敗了,因為此時某些程序寫入了掛載的文件系統,猜想這就是為什麼umount之前的一個好習慣:-)

dd應該真的只是openwrite,我猜MacOSX版本添加了一些控制,我認為很容易理解為什麼使用它們的設備名稱,與Linux相比我在dd‘ing之前進行了三重檢查。

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