有三篇教程
1、https://raspberrypi.stackexchange.com/questions/311/how-do-i-backup-my-raspberry-pi/4213#4213 ,教你怎样用dd来备份
2、https://raspberrypi.stackexchange.com/questions/9217/resource-busy-error-when-using-dd-to-copy-disk-img-to-sd-card 备份时,如果resource busy怎么办
3、https://unix.stackexchange.com/questions/271471/running-dd-why-resource-is-busy 为什么会出现 resource busy。
mac上本来双盘COPY是很简单的,打开diskutil,加载两个磁盘,对着要恢复的盘,右键:选择恢复,可以选择 img/dmg文件,也可以选择已经 mount的磁盘。然而在恢复树莓的时候,一直失败【忘了截图了】
于是找到了教程1,教你怎么在命令下行备份,方法很简单,就2步
1、diskutil list,查看你的SD卡对应的是哪个磁盘,
2、备份:sudo dd if=/dev/rdisk1 of=/path/to/backup.img bs=1m
恢复:sudo dd if=/path/to/backup.img of=/dev/rdisk1 bs=1m
3、如果觉得太大,还可以gzip
备份:sudo dd if=/dev/rdisk1 bs=1m | gzip > /path/to/backup.gz
恢复:gzip -dc /path/to/backup.gz | sudo dd of=/dev/rdisk1 bs=1m
如果你仔细看教程1,你会发现,diskutil list,显示的是当前磁盘,大部分都是直接写的/dev/disk3 之类的,而 上面的备份命令却写的是 rdisk1 。这是什么原因?教程1给了个wiki:https://elinux.org/RPi_Easy_SD_Card_Setup#Copying_an_image_to_the_SD_card_in_Mac.C2.A0OS.C2.A0X_.28command_line.29,有兴趣的话,可以去看看。
如果不想深究原因,那么看教程2,他会教你怎么弄,
1、df -h,看一下自己的SD卡是哪个,你会看到这时候显示的又和 diskutil list 不一样,df -h显示的都是 /dev/disk3s1 之类的
2、用diskutil unmount /dev/disk3s1,将它unmount掉
3、df -h 发现没有 /dev/disk3s1了
4、这时候参考 上面的rdisk方法,写入磁盘 /dev/rdisk[n] , 这个 n,就是刚才你 disk[3]s1 中的3,具体情况看你自己的sd卡是哪个盘
比如我这样:
sudo dd if=/Volumes/documents/2020-05-27-raspios-buster-lite-armhf.img of=/dev/rdisk3 bs=1m
1768+0 records in
1768+0 records out
1853882368 bytes transferred in 24.396307 secs (75990287 bytes/sec)
写入成功。
我就只知其然不知其所以然了,也没有过多深究。有兴趣的话,可以看看上面的教程3