Disk Utility Image from “BOOTCAMP” creating empty dmg

backupbootcampdisk-utilitymojave

I have a very complicated and time consuming Windows 10 install on my mid 2018 Macbook Pro (running 10.14.6 Mojave) Bootcamp partition. Virtualization (including Parallels 15 with Metal support) is not an option as this install is for Oculus Rift development which requires a very specific driver setup and as much video memory as possible from my eGPU.

I am also using Parallels 15 to run from the bootcamp partition when I'm in Mac OSX and I don't need to run the Oculus (again the drivers are different for display so this is useful to modify files, or do development when I do not need to run the Oculus). I only mention this as maybe there is something Parallels does to the partition that confuses Disk Utility?

I would like to create a backup of the bootcamp partition in order to restore later if needed. I have seen several people use Winclone, SuperDuper as well as vanilla Disk Utility with dd and hdiutil. I would prefer not installing any external software as I know this should be totally possible with the already installed software.

When I follow the instructions online here. The first step is to simply create a dmg image of the bootcamp partition with Disk Utility by right clicking on the Bootcamp partition and selecting Image from ... where '…' is the name of my Bootcamp partition. I leave Format: as read-only and Encryption as none. When I hit save it unmounts the partition and gives me an alert to grant permission for the operation:

diskimages-helper wants to make changes. Touch ID or enter your password to allow this.

I would prefer to grant Disk Utility and any helpers permissions so I don't have to allow every time as I'm curious if this is part of the problem. Once I do grant permission Disk Utility continues with creating the disk and reports that is was successful.

here is the detailed output:

Creating disk image from “BOOTCAMP” (disk0s3)

Unmounting “BOOTCAMP”
Preparing imaging engine…
Reading Master Boot Record (MBR : 0)…
   (CRC32 $90E6AEF8: Master Boot Record (MBR : 0))
Reading  (Apple_Free : 1)…
   (CRC32 $00000000:  (Apple_Free : 1))
Reading  (Type 72 : 2)…
   (CRC32 $6B3CCE6A:  (Type 72 : 2))
Reading  (Apple_Free : 3)…
   (CRC32 $00000000:  (Apple_Free : 3))
Adding resources…
Elapsed Time:  1.864s
File size: 11023 bytes, Checksum: CRC32 $A711D232
Sectors processed: 500469760, 11 copied
Speed: 3.0Kbytes/sec
Savings: 100.0%

Operation successful.

The problem, however, is that I am trying to do this on a 256 GB Bootcamp partition but the dmg created is only 11kb. It only takes a second to generate it as well.

Why is Disk Utility not copying the drive? Can I use dd directly on the bootcamp partition instead?

Thanks in advance!

EDIT:

I noticed that although my dmg is only 11kb when I continue on and use hdiutil:

hdiutil convert -format UDTO -o BOOTCAMP.img BOOTCAMP.dmg

The output:

hdiutil convert -format UDTO -o BOOTCAMP.img BOOTCAMP.dmg
Reading Master Boot Record (MBR : 0)…
Reading  (Apple_Free : 1)…
Reading  (Type 72 : 2)…
Elapsed Time: 36.230s
Speed: 6.6Gbytes/sec
Savings: 0.0%
created: /my path to my folder/BOOTCAMP.img.cdr

The output file is 115GB. Perhaps someone with more knowledge about Disk Utility could explain how the dmg works? Is it just referencing the Bootcamp partition in some way? Or is this 115GB file just garbage?

Best Answer

Disk Utility's ability to do block-copy was never very good, and was further hamstrung when APFS entered the scene and the job of handling DMGs was handed over to the Finder. It has always had troubles dealing with non-Apple file-systems, which is the main reason Winclone was born.

You're dealing with a container-ised NTFS volume, there aren't any tools in macOS that can do more than send files back & forth. Tim Perffitt's method was to give Winclone its own APFS-and-NTFS-savvy rsync framework, and to the best of my knowledge is unique.

One thought does occur though: You could pop one of Microsoft's free Windows 10 VM images into VMware Fusion or Oracle's VirtualBox (instead of running the Boot Camp install through a VM engine), mount your big NTFS partition into the VM and then use a Windows file-transfer method (e.g. Macrium Reflect or something rsync-based) to shuttle your stuff from the internal partition to an external target.