1

I've been backing up two of my MacBooks to a network-accessible USB disk. The backups have been done using TimeMachine and are encrypted.

One of the machines was recently damaged and unrecoverable, and now I'm trying to pull some important files from the backup image. On the disk, I have a "lars-mbp.backupbundle", which seems to be an encrypted disk image. I've tried to mount the image with DiskImageMounter, but I can get an error:

The following disk images couldn't be opened

Reason: no mountable file system

The thing is, I was able to open this bundle a few days ago and browse the files contained in the backup, but now I'm attempting to do it again and I've gotten this error.

I've been browsing through a couple of threads that seem to be related:

However, this doesn't appear to apply to me. Here's why:

  1. Running hdiutil attach -nomount -readwrite lars-mbp.backupbundle, I only get this: /dev/disk5. Unlike the examples in the linked thread above, there are no partitions or any mention of HFS.
  2. The com.apple.TimeMachine.MachineID.plist file has a different <key>VerificationState</key> value. While the linked thread assumes the value is <integer>2</integer>, in my case it is 1.

Here's the complete plist file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>VerificationDate</key>
    <date>2021-01-17T13:54:45Z</date>
    <key>VerificationExtendedSkip</key>
    <false/>
    <key>VerificationState</key>
    <integer>1</integer>
    <key>com.apple.backupd.HostUUID</key>
    <string>REDACTED</string>
    <key>com.apple.backupd.ModelID</key>
    <string>MacBookPro14,3</string>
</dict>
</plist>

I've been trying to figure out what VerificationState=1 means, but I haven't had much luck. I came across one hint that suggests that it means it's in a locked state, but I haven't found any solution to clear this.

My only real clue as to the root cause is the fact that I was able to mount the backup bundle successfully the other night, and as a result of that, something caused the bundle to get locked.

Any help would be appreciated.

Edit: Here's some extra context--an attempt to mount the bundle:

$ hdiutil attach -nomount -noverify -noautofsck -debug -stdinpass lars-mbp.backupbundle/
Enter disk image passphrase: [hidden]
2021-02-10 16:03:09.576 hdiutil[5939:97512] DIHLDiskImageAttach: disabling legacy image format attach
2021-02-10 16:03:09.576 hdiutil[5939:97512] DIHLDiskImageAttach: creating DIHelperProxy
2021-02-10 16:03:09.576 hdiutil[5939:97512] with dictionary: {
    agent = hdiutil;
    "auto-fsck" = 0;
    debug = 1;
    "drive-options" = {length = 42, bytes = 0x62706c69 73743030 d0080000 00000000 ... 00000000 00000009 };
    "image-options" = {length = 116, bytes = 0x62706c69 73743030 d2010203 045a7061 ... 00000000 0000004f };
    "main-url" = "file:///Volumes/LarsBackup/lars-mbp.backupbundle/";
    "mount-attempted" = 0;
    "mount-required" = 0;
    operation = DIHelperAttach;
    quiet = 0;
    "skip-verify" = 1;
    verbose = 0;
}
2021-02-10 16:03:09.576 hdiutil[5939:97512] [DIHelperProxy alloc]
2021-02-10 16:03:09.576 hdiutil[5939:97512] [DIHelperProxy alloc] returning self 0x7f8640a04110, retainCount 1
2021-02-10 16:03:09.576 hdiutil[5939:97512] DIHLDiskImageAttach: running DIHelperProxy
2021-02-10 16:03:09.576 hdiutil[5939:97512] [DIHelperProxy performOperationReturning] entry
2021-02-10 16:03:09.576 hdiutil[5939:97512] [DIHelperProxy performOperationReturning] detaching thread
2021-02-10 16:03:09.577 hdiutil[5939:97537] [DIHelperProxy workerThread] entry
2021-02-10 16:03:09.577 hdiutil[5939:97537] [DIHelperProxy workerThread] setting up server
2021-02-10 16:03:09.577 hdiutil[5939:97537] [DIHelperProxy threadSetupServer] entry
2021-02-10 16:03:09.577 hdiutil[5939:97537] XPC: created intermediaryConnection connection
2021-02-10 16:03:09.577 hdiutil[5939:97537] XPC: creating helperconnection connection
2021-02-10 16:03:09.578 hdiutil[5939:97537] [DIHelperProxy threadSetupServer] exiting
2021-02-10 16:03:09.578 hdiutil[5939:97537] [DIHelperProxy threadLaunchToolAuthenticated] entry (spawn version)
2021-02-10 16:03:09.578 hdiutil[5939:97537] launching helper tool at "/System/Library/PrivateFrameworks/DiskImages.framework/Resources/diskimages-helper".
2021-02-10 16:03:09.580 hdiutil[5939:97537] [DIHelperProxy threadLaunchToolAuthenticated] exiting (spawn version)
2021-02-10 16:03:09.580 hdiutil[5939:97537] [DIHelperProxy workerThread] running runloop
2021-02-10 16:03:09.591 hdiutil[5939:97515] [DIHelperProxy connectToFramework] entry, helper
2021-02-10 16:03:09.591 hdiutil[5939:97515] [DIHelperProxy sendOperationToHelper] entry
2021-02-10 16:03:09.591 hdiutil[5939:97515] [DIHelperProxy sendOperationToHelper] starting operation with helper
2021-02-10 16:03:09.591 hdiutil[5939:97515] [DIHelperProxy sendOperationToHelper] exit
2021-02-10 16:03:09.591 hdiutil[5939:97515] [DIHelperProxy connectToFramework] exit
2021-02-10 16:03:09.602 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: initialize
Initializing…
myStatusProc: returning 0 
2021-02-10 16:03:09.602 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] exit
2021-02-10 16:03:09.603 diskimages-helper[5942:97543] updateImageAndDriveDictionaries: before update _imageOptions: {
    "enable-keychain" = 1;
}
2021-02-10 16:03:09.603 diskimages-helper[5942:97543] _driveOptions: {
    "auto-fsck" = 0;
    autodiskmount = 0;
    "unmount-timeout" = 0;
}
2021-02-10 16:03:09.603 diskimages-helper[5942:97543] DIHelperAttach: performOperation: initializing framework
2021-02-10 16:03:09.604 diskimages-helper[5942:97543] {
    agent = hdiutil;
    "allow-tty-prompt" = 1;
    "auto-fsck" = 0;
    "auto-fsck-failure-override-type" = callback;
    "auto-open-ro-root" = 0;
    "auto-open-rw-root" = 0;
    "auto-stretch" = 0;
    "bundlebs-checkpointing" = 0;
    "bundlebs-localcloseonflush" = 0;
    "bundlebs-localcloseonidle" = 0;
    "bundlebs-localcloseonsleep" = 0;
    "bundlebs-localfdcount" = 6;
    "bundlebs-remotecloseonflush" = 0;
    "bundlebs-remotecloseonidle" = 0;
    "bundlebs-remotecloseonsleep" = 0;
    "bundlebs-remotefdcount" = 3;
    "burn-no-underrun-protection" = 0;
    "burn-synthesize-content" = 1;
    "bzip2-level" = 0;
    "callback-with-sla" = 1;
    debug = 1;
    "disable-encrypted-images" = 0;
    "disable-kernel-mounting" = 1;
    "disable-owners" = 0;
    "drive-options" = {length = 42, bytes = 0x62706c69 73743030 d0080000 00000000 ... 00000000 00000009 };
    "enable-owners" = 0;
    "hfsplus-stretch-parameters" =     {
        "hfsplus-stretch-allocation-block-size" = 4096;
        "hfsplus-stretch-allocation-file-size" = 8388608;
        "hfsplus-stretch-threshold" = 524288;
    };
    "idle-timeout" = 15;
    "ifd-format" = UDZO;
    "ifd-segment-size" = 0;
    "iff-format" = UDZO;
    "iff-fs" = "HFS+";
    "iff-layout" = GPTSPUD;
    "iff-source-owners" = auto;
    "iff-spotlight-indexing" = 0;
    "iff-temp-sparse-band-size" = 20480;
    "iff-temp-use-rw-if-possible" = 1;
    "iff-usehelper" = 1;
    "ignore-bad-checksums" = 0;
    "image-options" = {length = 116, bytes = 0x62706c69 73743030 d2010203 045a7061 ... 00000000 0000004f };
    "main-url" = "file:///Volumes/LarsBackup/lars-mbp.backupbundle/";
    "mount-attempted" = 0;
    "mount-point" = "/Volumes/";
    "mount-private" = 0;
    "mount-required" = 0;
    "mount-type" = in;
    "nbi-spotlight-indexing" = 0;
    operation = DIHelperAttach;
    "pthread-reader-cap" = 4;
    quiet = 0;
    "skip-auto-fsck-for-system-images" = 1;
    "skip-previously-verified" = 1;
    "skip-sla" = 0;
    "skip-verify" = 1;
    "skip-verify-locked" = 0;
    "skip-verify-remote" = 1;
    "sparsebundle-compactonidle" = 0;
    "suppress-uiagent" = 1;
    "unmount-timeout" = 0;
    "use-keychain" = 1;
    verbose = 0;
    "zlib-level" = 1;
}
DILoadDriver: checking for disk image driver
DILoadDriver: DI_kextExists() returned 0x00000000 (0)
DIIsInitialized: returning NO
2021-02-10 16:03:09.606 diskimages-helper[5942:97543] -checkForPreviouslyAttachedImage: entry
2021-02-10 16:03:09.606 diskimages-helper[5942:97543] imageURL file:///Volumes/LarsBackup/lars-mbp.backupbundle/
2021-02-10 16:03:09.606 diskimages-helper[5942:97543] shadowURL (null)
2021-02-10 16:03:09.606 diskimages-helper[5942:97543] sectionStart (null) sectionLength (null)
2021-02-10 16:03:09.606 diskimages-helper[5942:97543] checkForPreviouslyAttachedImage: setting legacy-disabled to 1
DIIsInitialized: returning YES
DIBackingStoreNewWithCFURL: entry with
file:///Volumes/LarsBackup/lars-mbp.backupbundle/
skip-permissions-check: true
legacy-disabled: true
DIBackingStoreInstantiatorProbe: entry
file:///Volumes/LarsBackup/lars-mbp.backupbundle/
skip-permissions-check: true
legacy-disabled: true
DIBackingStoreInstantiatorProbe: probing interface 0 CBSDBackingStore
CBSDBackingStore::newProbe directory, not a valid image file.
CBSDBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  0, score    -1000, CBSDBackingStore
DIBackingStoreInstantiatorProbe: probing interface 1 CBundleBackingStore
CBundleBackingStore::newProbe: got bundle
CFBundle 0x7fb23a304e10 </Volumes/LarsBackup/lars-mbp.backupbundle> (not loaded)
band-size: 268435456
bundle-backingstore-version: 1
diskimage-bundle-type: com.apple.diskimage.sparsebundle
size: 2375302624256
CFBundleInfoDictionaryVersion: 6.0
CBundleBackingStore::newProbe score 1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  1, score     1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: probing interface 2 CRAMBackingStore
CRAMBackingStore::probe: scheme "file": not ram: or ramdisk: scheme.
CRAMBackingStore::probe: score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: probing interface 3 CCarbonBackingStore
CCarbonBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  3, score    -1000, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: probing interface 4 CDevBackingStore
CDevBackingStore::newProbe: not /dev/disk or /dev/rdisk (/Volumes/LarsBackup/lars-mbp.backupbundle).CDevBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: probing interface 5 CCURLBackingStore
CCURLBackingStore::probe: scheme is: file
CCURLBackingStore::probe: not recognized URL scheme.
CCURLBackingStore::probe: score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: probing interface 6 CVectoredBackingStore
CVectoredBackingStore::newProbe not "vectored" scheme.
CVectoredBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
DIBackingStoreInstantiatorProbe: selecting CBundleBackingStore
DIBackingStoreNewWithCFURL: CBundleBackingStore
CBundleBackingStore::newWithCFURLandToken: perm is 0
DIIsInitialized: returning YES
DIBackingStoreNewWithCFURL: entry with
file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
legacy-disabled: true
bs-no-follow: true
skip-permissions-check: true
use-filename-for-prompt: lars-mbp.backupbundle
DIBackingStoreInstantiatorProbe: entry
file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
legacy-disabled: true
bs-no-follow: true
skip-permissions-check: true
use-filename-for-prompt: lars-mbp.backupbundle
DIBackingStoreInstantiatorProbe: probing interface 0 CBSDBackingStore
CBSDBackingStore::newProbe score 100 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  0, score      100, CBSDBackingStore
DIBackingStoreInstantiatorProbe: probing interface 1 CBundleBackingStore
CBundleBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  1, score    -1000, CBundleBackingStore
DIBackingStoreInstantiatorProbe: probing interface 2 CRAMBackingStore
CRAMBackingStore::probe: scheme "file": not ram: or ramdisk: scheme.
CRAMBackingStore::probe: score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  2, score    -1000, CRAMBackingStore
DIBackingStoreInstantiatorProbe: probing interface 3 CCarbonBackingStore
CCarbonBackingStore::newProbe: setting initial rval to +100
CCarbonBackingStore::newProbe score 100 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  3, score      100, CCarbonBackingStore
DIBackingStoreInstantiatorProbe: probing interface 4 CDevBackingStore
CDevBackingStore::newProbe: not /dev/disk or /dev/rdisk (/Volumes/LarsBackup/lars-mbp.backupbundle/token).CDevBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  4, score    -1000, CDevBackingStore
DIBackingStoreInstantiatorProbe: probing interface 5 CCURLBackingStore
CCURLBackingStore::probe: scheme is: file
CCURLBackingStore::probe: not recognized URL scheme.
CCURLBackingStore::probe: score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  5, score    -1000, CCURLBackingStore
DIBackingStoreInstantiatorProbe: probing interface 6 CVectoredBackingStore
CVectoredBackingStore::newProbe not "vectored" scheme.
CVectoredBackingStore::newProbe score -1000 for file:///Volumes/LarsBackup/lars-mbp.backupbundle/token
DIBackingStoreInstantiatorProbe: interface  6, score    -1000, CVectoredBackingStore
DIBackingStoreInstantiatorProbe: selecting CBSDBackingStore
DIBackingStoreNewWithCFURL: CBSDBackingStore
CBSDBackingStore::setNoFollow: setting _noFollow to 1
DIBackingStoreNewWithCFURL: instantiator returned 0
DIBackingStoreNewWithCFURL: returning 0
CBundleBackingStore::setURL entry
CBundleBackingStore::setURL CFURLStat passed
CBundleBackingStore::setURL fPath is /Volumes/LarsBackup/lars-mbp.backupbundle
CBundleBackingStore::isRemote: returning false
CBundleBackingStore::setURL got unique identifier
CBundleBackingStore::newWithCFURLandToken: setURL returned 0
CBundleBackingStore::setSecurityToken entry
CBundleBackingStore::setSecurityToken proxy encoding not supported
CBundleBackingStore::newWithCFURLandToken: setSecurityToken returned 0
copyInfoPlist: fcntl(F_OPENFROM, Info.plist) passed
copyInfoPlist: total read 502 bytes
band-size: 268435456
bundle-backingstore-version: 1
diskimage-bundle-type: com.apple.diskimage.sparsebundle
size: 2375302624256
CFBundleInfoDictionaryVersion: 6.0
CBundleBackingStore::processBundle: getting kDIBackingStoreSizeKey
CBundleBackingStore::processBundle: dfLength 2375302624256
CBundleBackingStore::processBundle: getting kDIBackingStoreBandSizeKey
CBundleBackingStore::processBundle: _bytesPerBand 268435456
CBundleBackingStore::newWithCFURLandToken: processBundle returned 0
CBundleBackingStore::isRemote: returning false
CBundleBackingStore::processOptions: _maxOpenBands is 6 entries
CBundleBackingStore::processOptions: kMaxAsyncCloses is 16 
CBundleBackingStore::processOptions: _bandTableCloseOnSleep is no
CBundleBackingStore::processOptions: _bandTableCloseOnIdle is no
CBundleBackingStore::processOptions: _bandTableCloseOnFlush is no
CBundleBackingStore::processOptions: _bandTable initialized
CBundleBackingStore::setPermission entry inPerm = 0
CBundleBackingStore::newWithCFURLandToken: setPermission returned 0
CBundleBackingStore::newWithCFURLandToken: returning 0
DIBackingStoreNewWithCFURL: instantiator returned 0
DIBackingStoreNewWithCFURL: returning 0
2021-02-10 16:03:09.608 diskimages-helper[5942:97543] -checkForPreviouslyAttachedImage: resolving file:///Volumes/LarsBackup/lars-mbp.backupbundle/ returned 0
2021-02-10 16:03:09.608 diskimages-helper[5942:97543] -checkForPreviouslyAttachedImage: imageUID (
    "d16777227:i161"
) shadowUID (null)
***** testing:
0: d16777227:i161
(null)
(null)
2021-02-10 16:03:09.609 diskimages-helper[5942:97543] DIHelperAttach: performOperation: image previously attached as
2021-02-10 16:03:09.609 diskimages-helper[5942:97543] {
    "system-entities" =     (
                {
            "content-hint" = "";
            "dev-entry" = "/dev/disk5";
        }
    );
}
2021-02-10 16:03:09.609 diskimages-helper[5942:97543] -[DIHelperHDID initWithDiskImage:]
2021-02-10 16:03:09.609 diskimages-helper[5942:97543] enableCallbacks() entry
2021-02-10 16:03:09.609 diskimages-helper[5942:97543] enableCallbacks() call backs now enabled
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] DIHelperAttach: performOperation: attaching disk image
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] performAttach: entry
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] [DIHelperOperator frameworkCallbackWithDictionary] calling home {
    "status-stage" = attach;
}
2021-02-10 16:03:09.610 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: attach
Attaching…
myStatusProc: returning 0 
2021-02-10 16:03:09.610 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] exit
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] [DIHelperOperator frameworkCallbackWithDictionary] exit 0
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] _needToAutoFsck: auto-fsck=NO detected
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] _needToAutoFsck: returning NO
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] setMountFlags: 0x0
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] performAttach: calling remountReturningDictionary
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] -remountReturningDictionary:
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] _buildReturnDictionary:
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] _dictionaryFromDisk: adding (disk5): {
    "dev-entry" = "/dev/disk5";
    "potentially-mountable" = 0;
}
2021-02-10 16:03:09.610 diskimages-helper[5942:97543] -remountReturningDictionary: _buildReturnDictionary returned 0
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] -remountReturningDictionary: kicked off hdiejectd
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] DIHelperAttach: performOperation: post-processing disk image
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] [DIHelperOperator frameworkCallbackWithDictionary] calling home {
    "status-stage" = "post-process";
}
2021-02-10 16:03:09.611 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: post-process
Finishing…
myStatusProc: returning 0 
2021-02-10 16:03:09.611 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] exit
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] [DIHelperOperator frameworkCallbackWithDictionary] exit 0
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] postProcessing: devEntry: /dev/disk5 mountPoint: (null)
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] performPostProcessing: returning 0.
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] [DIHelperOperator frameworkCallbackWithDictionary] calling home {
    "status-stage" = cleanup;
}
2021-02-10 16:03:09.611 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] entry
status proc called: cleanup
Finishing…
myStatusProc: returning 0 
2021-02-10 16:03:09.611 hdiutil[5939:97515] [DIHelperProxy frameworkCallbackWithDictionary] exit
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] [DIHelperOperator frameworkCallbackWithDictionary] exit 0
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] -[DIHelperHDIDDA dealloc:]
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] disableCallbacks() entry
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] disableCallbacks() call backs now disabled
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] -[DIHelperHDID dealloc:]
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] DIHelperAttach performOperation: returning 0
2021-02-10 16:03:09.611 diskimages-helper[5942:97543] -decrementBackgroundThreadCount: _backgroundThreadCount is now 0.
2021-02-10 16:03:09.611 diskimages-helper[5942:97540] DIHelper _report_results: reporting {
    payload =     {
        "system-entities" =         (
                        {
                "dev-entry" = "/dev/disk5";
                "potentially-mountable" = 0;
            }
        );
    };
    "result-code" = 0;
}
2021-02-10 16:03:09.612 hdiutil[5939:97515] reportResultsToFramework: proxy has finished operation
2021-02-10 16:03:09.612 hdiutil[5939:97515] reportResultsToFramework: results are: {
    payload =     {
        "system-entities" =         (
                        {
                "dev-entry" = "/dev/disk5";
                "potentially-mountable" = 0;
            }
        );
    };
    "result-code" = 0;
}
2021-02-10 16:03:09.612 hdiutil[5939:97515] reportResultsToFramework: _threadResultsError is 0
2021-02-10 16:03:09.612 hdiutil[5939:97515] reportResultsToFramework: disconnecting from helper.
2021-02-10 16:03:09.612 hdiutil[5939:97515] [DIHelperProxy disconnectFromHelper] entry
2021-02-10 16:03:09.612 hdiutil[5939:97515] disconnectFromHelper: terminating proxy
2021-02-10 16:03:09.612 hdiutil[5939:97537] [DIHelperProxy threadRunRunLoop] releasing connection
2021-02-10 16:03:09.612 hdiutil[5939:97537] [DIHelperProxy workerThread] after running runloop
2021-02-10 16:03:09.612 hdiutil[5939:97515] disconnectFromHelper: terminated proxy
2021-02-10 16:03:09.612 hdiutil[5939:97537] [DIHelperProxy workerThread] waiting for task to terminate to avoid zombies
2021-02-10 16:03:09.612 hdiutil[5939:97515] [DIHelperProxy disconnectFromHelper] exit
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] DIHelper: terminateHelper: entry.
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] [DIHelper frameworkConnectionDied] entry
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] [DIHelper frameworkConnectionDied] releasing connection
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] -DIHelperAgentMaster terminateUIAgentConnection.
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] [DIHelper frameworkConnectionDied] marking _frameworkDisconnected
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] [DIHelper frameworkConnectionDied] preparing to act like a daemon.
2021-02-10 16:03:09.612 diskimages-helper[5942:97541] [DIHelper frameworkConnectionDied] exiting
2021-02-10 16:03:09.612 diskimages-helper[5942:97540] -setCanTerminate: main thread can exit
2021-02-10 16:03:09.612 diskimages-helper[5942:97540] helper: child_after_exec returning 0
2021-02-10 16:03:09.613 hdiutil[5939:97537] [DIHelperProxy workerThread] helper exited
2021-02-10 16:03:09.613 hdiutil[5939:97537] [DIHelperProxy workerThread] exiting
2021-02-10 16:03:09.613 hdiutil[5939:97512] [DIHelperProxy performOperationReturning] returning 0
2021-02-10 16:03:09.613 hdiutil[5939:97512] DIHLDiskImageAttach: DIHelperProxy returned 0
2021-02-10 16:03:09.613 hdiutil[5939:97512] [DIHelperProxy dealloc]
DIHLDiskImageAttach() returned 0
system-entities:
    0:
        dev-entry: /dev/disk5
        potentially-mountable: false
/dev/disk5                                              
2

I ended up figuring out a solution. It took several tries and a lot of time, but in the end I was able to recover my files.

TL;DR: Run fsck_hfs as root.

I also think I figured out why this problem occurred in the first place:

  • I tried to plug my backup disk directly directly to another machine.
  • I was originally able to access my backup files, but was no longer able to after I had put my machine to sleep.
  • I think it's the sleep that caused the disk image to get into a bad state.

I believe the reason why my previous attempts failed was due not being root.

$ sudo su
$ chflags -R nouchg lars-mbp.backupbundle
$ hdiutil attach -nomount -noverify -noautofsck lars-mbp.backupbundle  # this prompts me for the bundle encryption password

Running diskutil list, I'm able to the device associated with the HFS volume. Output below is truncated from the real output:

$ diskutil list
/dev/disk5 (external, physical):
   /dev/disk5           GUID_partition_scheme           
   /dev/disk5s1         EFI                             
   /dev/disk5s2         Apple_HFS  

/dev/disk5s2 is the one we want. Then I ran fsck_hfs on the disk:

$ fsck_hfs -drfy /dev/disk5s2
journal_replay(/dev/disk5s2) returned 0
** /dev/rdisk5s2
    Using cacheBlockSize=32K cacheTotalBlock=65536 cacheSize=2097152K.
   Executing fsck_hfs (version hfs-556.60.1).
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine Backups
** Checking extents overflow file.
** Checking catalog file.
** Rebuilding catalog B-tree.
hfs_UNswap_BTNode: invalid node height (1)
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine Backups
** Checking extents overflow file.
** Checking catalog file.
   Incorrect block count for file shutdown_time
   (It should be 1 instead of 0)
   Incorrect number of thread records
(4, 21684)
    CheckCatalogBTree: dirCount = 480561, dirThread = 480560
   Incorrect number of thread records
(4, 21684)
    CheckCatalogBTree: fileCount = 3833287, fileThread = 3833274
** Checking multi-linked files.
** Checking catalog hierarchy.
   Missing thread record (id = 6297728)
   Invalid directory item count
   (It should be 53 instead of 80)
   Incorrect folder count in a directory (id = 5263039)
   (It should be 1 instead of 12)
** Checking extended attributes file.
   Overlapped extent allocation (id = 6297658, /.Spotlight-V100/Store-V2/3D6A1DA4-ABC0-4E0F-B58E-85DBB4D0546C/live.2.shadowIndexArrays)
    extentType=0x0, startBlock=0x3550cd5, blockCount=0x96, attrName=(null)
    extentType=0x0, startBlock=0x3550cd5, blockCount=0x1, attrName=(null)
   Overlapped extent allocation (id = 6297731)
    extentType=0x0, startBlock=0x3550cd8, blockCount=0x1, attrName=(null)
   Overlapped extent allocation (id = 6297732)
    extentType=0x0, startBlock=0x3550cd9, blockCount=0x1, attrName=(null)
   Overlapped extent allocation (id = 6297744)
    extentType=0x0, startBlock=0x3550cd6, blockCount=0x1, attrName=(null)
   Overlapped extent allocation (id = 6297757)
    extentType=0x0, startBlock=0x3550cd7, blockCount=0x1, attrName=(null)
   Overlapped extent allocation (id = 6297758)
** Checking multi-linked directories.
    privdir_valence=13410, calc_dirlinks=123458, calc_dirinode=13410
** Checking volume bitmap.
   Volume bitmap needs minor repair for orphaned blocks
   Volume bitmap needs repair for under-allocation
** Checking volume information.
   Invalid volume free block count
   (It should be 234391157 instead of 236195590)
    invalid VHB nextCatalogID 
   Volume header needs minor repair
(2, 0)
   Verify Status: VIStat = 0xa800, ABTStat = 0x0000 EBTStat = 0x0000
                  CBTStat = 0x0800 CatStat = 0x00004020
** Repairing volume.
   Look for links to corrupt files in DamagedFiles directory.
GetCatalogRecord: No matching catalog thread record found
   Cannot create links to all corrupt files
GetCatalogRecord: No matching catalog thread record found
GetCatalogRecord: No matching catalog thread record found
GetCatalogRecord: No matching catalog thread record found
GetCatalogRecord: No matching catalog thread record found
    FixOrphanedFiles: Created thread record for id=6297756 (err=0)
    FixOrphanedFiles: Created thread record for id=6297742 (err=0)
    FixOrphanedFiles: Created thread record for id=6297734 (err=0)
    FixOrphanedFiles: Created thread record for id=6297741 (err=0)
    FixOrphanedFiles: Created thread record for id=6297740 (err=0)
    FixOrphanedFiles: Created thread record for id=6297735 (err=0)
    FixOrphanedFiles: Created thread record for id=6297732 (err=0)
    FixOrphanedFiles: Created thread record for id=6297733 (err=0)
    FixOrphanedFiles: Created thread record for id=6297739 (err=0)
    FixOrphanedFiles: Created thread record for id=6297738 (err=0)
    FixOrphanedFiles: Created thread record for id=6297736 (err=0)
    FixOrphanedFiles: Created thread record for id=6297737 (err=0)
    FixOrphanedFiles: Created thread record for id=6297757 (err=0)
    FixOrphanedFiles: Created thread record for id=6297730 (err=0)
    FixOrphanedFiles: Created thread record for id=6297729 (err=0)
    FixOrphanedFiles: Created thread record for id=6297731 (err=0)
    FixOrphanedFiles: Created thread record for id=6297728 (err=0)
    FixOrphanedFiles: Created thread record for id=6297754 (err=0)
    FixOrphanedFiles: Created thread record for id=6297746 (err=0)
    FixOrphanedFiles: Created thread record for id=6297753 (err=0)
    FixOrphanedFiles: Created thread record for id=6297752 (err=0)
    FixOrphanedFiles: Created thread record for id=6297747 (err=0)
    FixOrphanedFiles: Created thread record for id=6297744 (err=0)
    FixOrphanedFiles: Created thread record for id=6297745 (err=0)
    FixOrphanedFiles: Created thread record for id=6297751 (err=0)
    FixOrphanedFiles: Created thread record for id=6297750 (err=0)
    FixOrphanedFiles: Created thread record for id=6297748 (err=0)
    FixOrphanedFiles: Created thread record for id=6297749 (err=0)
    FixOrphanedFiles: Created thread record for id=6297758 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297642 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297649 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297650 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297675 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297676 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297677 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297678 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297679 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297681 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297683 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297684 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297685 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297690 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297691 (err=0)
    FixOrphanedFiles: Deleted thread record for id=6297692 (err=0)
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine Backups
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
   Incorrect folder count in a directory (id = 2)
   (It should be 8 instead of 7)
** Checking extended attributes file.
** Checking multi-linked directories.
    privdir_valence=13410, calc_dirlinks=123458, calc_dirinode=13410
** Checking volume bitmap.
** Checking volume information.
** Repairing volume.
** Rechecking volume.
** Checking Journaled HFS Plus volume.
** Detected a case-sensitive volume.
   The volume name is Time Machine Backups
** Checking extents overflow file.
** Checking catalog file.
** Checking multi-linked files.
** Checking catalog hierarchy.
** Checking extended attributes file.
** Checking multi-linked directories.
    privdir_valence=13410, calc_dirlinks=123458, calc_dirinode=13410
** Checking volume bitmap.
** Checking volume information.
** Trimming unused blocks.
** The volume Time Machine Backups was repaired successfully.
    CheckHFS returned 0, fsmodified = 1

This ran for a long time, but afterward I was able to recover all files.

Note: I actually had two different computers' backups on this backup disk, and both were corrupted due to this issue. Fixing the other required running fsck_hfs multiple times. Your results may vary.

Some sources which helped me along the way:

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .