作用:制作各种启动U盘,备份系统镜像,备份文档数据,克隆硬盘等
查看设备块
先通过diskutil
确认U盘的设备块
diskutil list
显示信息
/dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *251.0 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_CoreStorage 250.1 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD *248.4 GB disk1 Logical Volume on disk0s2 F5A4D026-CAB5-4793-9895-5F01854F7A48 Unencrypted /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *7.7 GB disk2 1: Windows_FAT_32 MENG 7.6 GB disk2s1
上面显示的是我本机的磁盘设备,disk0
和disk1
是自带硬盘(disk0是恢复和引导分区,disk1是主要分区),disk2
是U盘设备。
卸载设备
在通过dd命令写U盘的时候需要unmount
,注意不能在finder
里推出U盘,那样的话整个设备块也卸载了。
diskutil unmountDisk /dev/disk2
显示信息
Unmount of all volumes on disk1 was successful
写入设备镜像
sudo dd if=/data/CentOS-7-x86_64-DVD-1503-01.iso of=/dev/disk2 bs=1024
Mac下显示dd命令进度
Linux
一般会向USR1
发送kill
信号来即时的显示dd
当前进度,Mac
下发了信号真的就把dd
给kill
掉了(当时我就哭了,传了接近一个小时)
查了一下资料,可以先使用brew
安装pv
,之后使用以下的命令来实现进度条的显示:
pv -cN source < /data/CentOS-7-x86_64-DVD-1503-01.iso | dd of=/dev/disk2 bs=4m
PS:需要切换到root用户执行
sudo -i
其他注意事项
bs=1024
是块的大小,后面的数值大,写的速度相对块一点
具体多少我不是太清楚,开始查的参考资料都是1024
,也有2M
,《Mac OS X下显示dd命令进度》一文中用的是4M
备份整块硬盘(磁盘克隆)
Mac中硬盘是disk0,disk1,disk2,disk3...
这里假设要备份的磁盘为/dev/disk2
,新磁盘为/dev/disk3
dd if=/dev/disk2 of=/dev/disk3
PS:记得执行sudo -i
以root
权限执行
备份到一个磁盘文件
dd if=/dev/disk2 of=~/disk2.img
压缩磁盘镜像
gzip disk1.img #generates disk1.img.gz
创建压缩磁盘映像文件
dd if=/dev/sda | gzip > disk.img.gz
或
dd if=/dev/sda | bzip2 > disk.img.bz2
分区克隆
Mac中硬盘及分区表示方法为
disk0 disk0s2 disk1 disk2s1 disk3 disk0s1 disk0s3 disk2 disk2s2 disk3s1
克隆第三块硬盘第一分区到第四块硬盘第一分区中
dd if=/dev/disk2s1 of=/dev/disk3s1
备份第三块硬盘第一块分区到名为part1.img的文件中
dd if=/dev/disk2s1 of=~/part1.img
镜像文件恢复磁盘或分区
把保存在disk1.img中的映像恢复到第一块磁盘
dd if=disk1.img of=/dev/sda
把保存在part1.img中的映像恢复到第一块硬盘的第二个分区
dd if=part1.img of=/dev/hda2
PS:无论备份还是恢复,都需要保证of
指向的文件或磁盘空间要大于if
指向的内容,因为是按字节复制,如果没有足够的空间去存储内容,备份自然会失败。