How do you clone an internal drive to an external one, and why?

I am trying to fix my hard drive so that it can be formatted as APFS. Another Stack Exchange post suggests I must do the following:

  • Full clone of internal drive to external drive using SuperDuper!
  • Reboot from external drive
  • Reformat internal drive as APFS
  • Full clone of external drive to internal drive using SuperDuper!
  • Reboot from internal drive

My question is:

Why do I have to clone the internal drive to an external drive and then reboot from the external drive? What does this accomplish?

I then have to reformat the internal drive as APFS, will this somehow be more possible once I have rebooted from the external (yet cloned internal) drive?

Why is it more possible to format the internal drive as APFS once it is cloned to an external drive? And, when they say "reformat the internal drive as APFS", do they mean the clone of the internal drive that now resides on the external drive, or the actual internal drive that was left behind when the original internal was sent to the external?


Solution 1:

Why do I have to clone the internal drive to an external drive and then reboot from the external drive? What does this accomplish?

Technically, it allows you to re-partition and format your internal drive as APFS because you can't be mounted to the drive/partition you want to modify. Booting from the external drive allows you to modify the internal drive.

Realistically speaking this is not necessary because...

  • The install of Mojave/Catalina will auto convert your SSD from JHFS+ to APFS "on the fly" during the install process

  • You can accomplish the exact same thing by simply booting from Recovery ⌘ CommandR or the USB installer of Mojave/Catalina (I prefer this method).

In terms of backing up your drive, having a clone of your drive isn't a bad thing, but Time Machine will get the job done better.

As a side note... you don't need SuperDuper or CCC (Carbon Copy Cloner). You can use the built in command dd

$ dd if=diskX of=diskY bs=1M

Where diskX = your source (internal) disk and diskY = the target (external) disk. This command will do the exact same thing as those programs.