Answers:
您可以使用dd命令对驱动器进行完美的克隆。这是OS X附带的命令行工具。为了使克隆完美,您需要确保未积极使用源和目标。
为准备克隆,我建议您创建一个可以从中引导的辅助引导盘。制作副本时,克隆源应为离线卷,而不是正在使用中。否则,您将冒着复制磁盘上不完整状态的风险。
将计算机引导到辅助引导磁盘后,登录并启动终端或iTerm窗口。
运行diskutil以获取可用驱动器的列表。其中之一将是您要克隆的目标驱动器。另一个将是您的源驱动器。例如:
> diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *320.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 319.2 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk1
1: EFI 209.7 MB disk1s1
2: Apple_HFS Backup 499.8 GB disk1s2
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk2
1: EFI 209.7 MB disk2s1
2: Apple_HFS Clone 499.8 GB disk2s2
假设这Macintosh HD
是Clone
我们dd
操作的源头和目标。使用以下命令启动克隆:
> sudo dd if=/dev/rdisk0 of=/dev/rdisk2 bs=1m conv=noerror,sync
当dd
完成您可能会看到这样的错误:
dd: /dev/rdisk2: short write on character device
dd: /dev/rdisk2: Input/output error
3726+1 records in
3726+1 records out
500107862016 bytes transferred in 14584.393113 secs (34290619 bytes/sec)
最后一条错误消息实际上还可以。最后写入的块是一小段,因为没有完整的1MB块要复制。别担心。
现在,您已经获得了Macintosh HD
驱动器的逐位完美克隆。使用Macintosh HD
驱动器重新引导系统并享受克隆乐趣!
dd
定传输的最佳块大小,而不必求助于信任互联网搜索或进行错误检测?
status=progress
选项dd
来查看进度和传输速率。然后,您可以中止CRTL+C
并尝试使用其他值bs
苹果公司定制的命令行实用程序用于克隆磁盘asr
。
它针对OS X的特定需求量身定制,以执行逐个文件以及基于块的映像,并处理分区大小的差异,允许网络流(甚至多播流)以及本地连接的磁盘之间进行复制。与dd
有所不同,它了解Apple最新的Core Storage卷管理,并且是图形磁盘实用程序调用的用于将数据从一个分区或卷移动到另一个分区或卷的程序。
asr
该工具与“磁盘工具”的“还原”选项卡使用的工具相同(请参阅我的答案)。命令行界面具有GUI界面忽略的其他选项,例如在HFS +(不区分大小写)和HFSX(区分大小写)格式之间进行转换,以及将副本放入Core Storage卷组中。但是对于不习惯命令行的人来说,使用它可能会更困难。
磁盘实用程序可以使用“还原”选项卡进行卷对卷克隆。在两个Mac OS Extended卷之间,这将进行块复制,即,它只是复制卷结构,因此所有文件都完全相同(直到文件ID号)。本质上是一样的事情dd
,不同的是Disk Utility可以在目标与源大小不完全相同的情况下扩展/收缩卷,而且速度要快得多(由于某些原因,dd
在OS X上非常慢)。
编辑:看到@Ian关于使用/ dev / rdiskN与/ dev / diskN的速度的注释后,我运行了一些快速和肮脏的基准测试,在两个4GB闪存驱动器之间进行复制:
dd using /dev/diskN: 2737 seconds
dd using /dev/rdiskN: 907 seconds
Disk Util, full volume: 840 seconds to copy + 213 seconds to verify
Disk Util, empty volume: 4 seconds to copy + 1 second to verify
因此,看起来rdisk建议使dd的运行速度与Disk Utility差不多。真正的区别是“磁盘工具”会验证其数据(速度较慢,但也许更安全),并跳过空白空间(如果磁盘几乎未满,则会更快)。就像我在上面说的那样,DU可以在复制时调整大小。
dd
via的详细输出pv
复制即使是小磁盘也可能花费很长时间,并且静音可能令人沮丧。如果安装pv(管道查看器),则可以使用它来监视任何流的进度。
如果您正在使用自制软件(应该这样做),安装起来pv
很简单:
brew install pv
然后确定要复制的磁盘。
diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *251.0 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage SSD 250.1 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1 (internal, virtual):
#: TYPE NAME SIZE IDENTIFIER
0: SSD +249.8 GB disk1
Logical Volume on disk0s2
2CFBB247-D59D-474F-8467-2B1BDB275524
Unencrypted
/dev/disk2 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk2
1: Windows_FAT_32 boot 43.0 MB disk2s1
2: Linux 15.5 GB disk2s2
/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk3
1: Windows_FAT_32 NO NAME 15.6 GB disk3s1
在这种情况下,/dev/disk2
是内部读取器中Raspberry Pi的Micro SD卡,以及/dev/disk3
USB加密狗中的新MicroSD。
复制它的命令与普通dd
命令非常相似,除了我们要利用以下事实of
:(输出文件)默认为STDOUT,if
(输入文件)默认为STDIN。这使您可以在两者之间使用UNIX管道。
# I'm going to define variables to make your copy-paste easier
SRC=/dev/rdisk2
DST=/dev/rdisk3
# This is the command you want
sudo dd bs=1m if=$SRC | pv | sudo dd bs=1m of=$DST
# Notice how similar this is to doing a simple
sudo dd bs=1m if=$SRC | sudo dd bs=1m of=$DST
# ...which is functionally identical to
sudo dd bs=1m if=$SRC of=$DST
# (except 2 processes vs. 1)
实际输出如下所示:
dd bs=1m if=/dev/zero count=16000 | pv | dd bs=1m of=/dev/null
16GiB 0:00:06 [2.46GiB/s] [ <=> ]
Carbon复制克隆程序很好,但是随后在我的Mac Pro上,它不再制作可启动克隆,我尝试了3次,每个克隆都无法启动,与以前不同。所以我换了SuperDuper!那个克隆启动正常
克隆Mac驱动器有两种类型。基于文件级别和块级别的克隆。众所周知,抄袭克隆器只能创建基于文件级的克隆,而其最大的竞争对手Superduper之一只能创建卷和分区的克隆,而不能创建整个磁盘。因此,我建议选择一种新兴的Mac克隆软件,该软件是Stellar Drive Clone,能够同时进行文件级和块级克隆。
它可以一点一点地创建整个驱动器的精确副本,也可以在任何外部驱动器,卷和网络驱动器上创建特定的卷。它可以在其免费的演示版本功能中在文件夹上创建驱动器的克隆,并从该文件夹还原备份。它可以在Mac上创建Recovery HD的克隆并支持窗口文件格式,MBR,ExFAT,FAT32等。
bs
,因为超过1m实际上会使速度变慢。(至少通过USB。我无法确定它是外部USB驱动器还是直接SATA连接。)