MacOS – Merge multiple Time Machine backup disk images

backupmacosmergetime-machine

My MacBook Pro typically backups to my iMac Time Machine server. I went on a year long trip, during which time I switched my MBP to instead back up to my router (which acts as a NAS and runs a Time Machine server of its own, which writes to a sparsebundle). Now that I'm back from my trip, I would like to resume backing up my MBP to my iMac.

I would like to "merge in" the backups from my NAS's sparsebundle, so that my iMac has the full history. Is this possible?

Original Time Machine destination: A sparsebundle hosted by my iMac

$tree -L 1 /Volumes/old_backup_sparse_bundle/Backups.backupdb/Alex's\ MacBook\ Pro
    /Volumes/old_backup_sparse_bundle/Backups.backupdb/Alex's\ MacBook\ Pro
    ├── 2017-12-29-033257
    ├── 2018-01-06-141057
    ├── 2018-01-13-041417
    ⋮
    ├── 2018-03-03-094036
    ├── 2018-03-07-233939
    ├── 2018-03-08-001351
    └── Latest -> 2018-03-08-001351

Temporary Time Machine destination: A sparsebundle hosted by my router

$ tree -L 1 /Volumes/newer_backup_sparse_bundle/Backups.backupdb/Alex's\ MacBook\ Pro
    /Volumes/newer_backup_sparse_bundle/Backups.backupdb/Alex's\ MacBook\ Pro
    ├── 2018-10-14-091702
    ├── 2018-10-21-100253
    ├── 2018-11-01-202140
    ⋮
    ├── 2019-03-03-192937
    ├── 2019-03-04-142255
    ├── 2019-03-04-153448
    └── Latest -> 2019-03-04-153448

Desired outcome: My iMac's sparebundle is backfilled with the router sparsebundle's snapshots:

$tree -L 1 /Volumes/newer_backup_sparse_bundle/Backups.backupdb/Alex's\ MacBook\ Pro
    /Volumes/newer_backup_sparse_bundle/Backups.backupdb/Alex's\ MacBook\ Pro
    ├── 2017-12-29-033257               ┐
    ├── 2018-01-06-141057               │
    ├── 2018-01-13-041417               │
    ⋮                                   │ Already present in this sparsebundle
    ├── 2018-03-03-094036               │
    ├── 2018-03-07-233939               │
    ├── 2018-03-08-001351               ┘
    ├── 2018-10-14-091702               ┐
    ├── 2018-10-21-100253               │
    ├── 2018-11-01-202140               │
    ⋮                                   │ "Merged in" from the router's sparsebundle sparsebundle
    ├── 2019-03-03-192937               │
    ├── 2019-03-04-142255               │
    ├── 2019-03-04-153448               ┘
    └── Latest -> 2019-03-04-153448

Best Answer

This is a really bad idea. How many files exist in one snapshot? Since you have hard links to contend with and protective permissions that prohibit most write operations, I would presume most attempts to construct a working hybrid will fail.

The failure modes likely are:

  • insufficient iops to get the job done in months to longer timeframe.
  • insufficient sophistication handling the unpublished checksum handling of when a backup has been tampered with or just failed to be successful.

I would love for someone to prove me wrong, but please make a backup copy of your backups if your main goal is actually preserving their viability. It’s likely you will be able to recover data from any tampered backup, but less likely you’ll be able to continue using a merged backup to make new backups. If that happens you now have another set and are further forked.