Here’s the scenario: your current external storage is full and naturally you bought a new external storage (HDD or SSD) that has twice (or more) the capacity of your current external. Now, some of your applications like Adobe Lightroom have registered your hard drive so you want to make sure that your hard drive is exactly like the old one, but with a bigger capacity.

This is the guide to cloning and extending your external storage so your application can’t tell the difference.

Plan and assumptions


This is how macOS (and other Apple OSes too) sees an Apple Filesystem storage. The wireframe is the physical layer (what you can touch). Inside the physical layer is the storage container and inside the container are the volumes (what you see in Finder). The dd command will copy the container (green cube) bit by bit into another physical storage.
  • You bought a new external storage with a larger capacity than the old external storage.
  • You will plug both external storage into the same Mac and run some commands to clone the volume of the current external storage into a new external storage and extend the new volume.
  • The command to clone the drive is dd and to extend the drive is diskutil
  • For this demo, the assumption is the old external storage is disk1 and the new external storage is disk2

The Steps

  • Plug in both new and old external storage into your Mac. Open up the Terminal app to access the command line. The Terminal app can be found in Finder -> Application -> Utilities -> Terminal.app
  • Use the diskutil command to list all the storage. Take note of the names of the external storage as detected by your Mac. In my example, my old external is disk4 and the new external is disk6

diskutil list

  • Use diskutil to unmount the external storage. This will make your storage invisible to your user interface, but your Mac still detects them.

diskutil unmountDrive disk1
diskutil unmountDrive disk2

  • Use the dd command to clone your old external drive into the new one. Important: Do not mix up the drive names in if and of options. If you mix them up, you are screwed. You need root access to do this command.

Sudo dd if=/dev/rdisk1 of=/dev/rdisk2 bs=64k status=progress

  • This command will take a while depending on your Mac and your external storage.
  • When the command is done, you essentially have cloned your old external storage into the new one. You can run the disk util command to extend the new external drive.

Diskutil apfs resizeContainer disk2 0

  • You should check and see if the new external drive has all the content and the new size. However, if the new external drive did not resize to the new large size, you have to fix the partition table in the drive. Run diskutil command to repair the drive and resize the storage again.

diskutil repairdisk disk2
diskutil apfs resizeContainer disk2 0

  • At this point, you are done

Tips

  • Using raw disk in the of and if option will make things go a lot faster. The raw disk has an “r” in front of the disk name. For example, is the external storage is disk2, the raw disk is rdisk2
  • Important: be careful with the of and if option flags. Don’t mix them up! The status=progress will show you how much data is being transferred. You can peek for more info by pressing ctrl + t.

Plug

Support this free website by visiting my Amazon affiliate links. Any purchase you make will give me a cut without any extra cost to you

BasePro
iPhonesiPhone 15 / iPhone 15 Plus (Renewed) - (Amazon)iPhone 15 Pro / iPhone 15 Pro Max (Renewed) - (Amazon)
WatchApple Watch SE (Amazon) / Apple Watch Series 9 (Amazon)Apple Watch Ultra 2 (Amazon)
AirPodsAirPods 3 (Amazon)AirPods Pro 2 (Amazon) / AirPods Max (Amazon)
iPadiPad 9 (Amazon) / iPad Mini (Amazon)iPad Air (Amazon) / iPad Pro M2 (Amazon)
LaptopsMacBook Air M3 (Amazon)MacBook Pro M3
DesktopMac Mini (Amazon) / iMac (Amazon)Mac Studio / Mac Pro
DisplaysStudio Display (Amazon)Pro Display XDR (Amazon)

Other Ecosystem Items