There are occasions where Migration Assistant isn’t available, or you don’t want to trust it. Even if it is available, you may prefer to let it migrate just your apps, for example, but wish to migrate your Home folder by hand.
Manual migration boils down to you copying, in the Finder, at the command line, or by running scripts, files from your old Mac to your new one. There is no single way to do this: you get to choose exactly what you migrate, and how you do it. I cannot, therefore, suggest any best way to do it. What I will do, though, is point out solutions to some of the pitfalls and problems which you may encounter.
Clone no more
One once-wonderful solution of migrating by cloning is almost certainly now doomed to fail. In this, you cloned your old Mac’s startup volume to become the startup volume for your new Mac. This was usually performed using an external disk as an intermediary, with software such as Carbon Copy Cloner or SuperDuper.
With almost all system files protected by SIP, and the T2 chip’s Secure Boot, even trying it would now involve disabling both, and a lot of hoping for the best. Were it to go wrong, which seems only too likely, you could easily end up with an unbootable mess and have to start again from scratch. In any case, it only ever worked well between two Macs which had similar hardware; when Apple updated models more frequently, that was more likely to be the case.
One of the best reasons for preferring manual migration over using Migration Assistant is that you can eliminate old detritus, unwanted and manifestly incompatible items during your manual process. Migration by cloning is even worse than Migration Assistant in this respect, as it carries over absolutely everything, whether wanted or not.
Creating the source
If you can, clone the contents of your old Mac onto an external drive and connect that to your new Mac. This gives by far the quickest access to the contents, especially if the drive is connected by Thunderbolt 3 or USB 3. Just as with Migration Assistant, you want to move a lot of files, possibly millions, some of which will be quite large. This also has the added advantage that you are copying from a volume which isn’t currently the boot disk.
Carbon Copy Cloner or SuperDuper should do this fine, according to your personal preference. You could also use Migration Assistant to migrate from the cloned disk, rather than the original Mac.
Key to failure: links, aliases and paths
Simply copying files should be highly reliable, so long as you know what to copy and where from. The two most common problems which arise with manual migration are failure to copy essential support files, which may be hidden or stored in a hidden folder, and the failure of software to locate files on which it depends.
Software, such as apps, can access other files and components using a variety of methods. Those which depend on the full path or a feature such as the i-node can easily break, preventing the app from running correctly, for example. This can also affect references made using links or aliases, which use paths or i-node numbers to the original item, and normally break when moved to a different volume.
One trick which can be very helpful here – and for other reasons – is to ensure that your boot volume, and any other important storage, has exactly the same name, such as the near-universal Macintosh HD even for an SSD. If your short user name is also identical, the expanded path to your Home folder will remain the same too.
Keychains and iCloud sharing
Before the days of iCloud, copying keychains across was a major problem, as it is best to log out of an account while performing major surgery on that user’s keychain. One painful solution was to copy across the old login keychain under a new name, then copy and paste between that and the new login keychain, a process which takes forever.
The simple answer now is to use a third-party service such as 1Password, or to share your old keychain in iCloud (if you don’t already do that). Allow plenty of time for that keychain to sync up to iCloud, then when you set your new Mac up, set it to use that keychain in iCloud. You may still need to keep a copy of your old keychain in case it contains something not properly shared.
The same goes for other databases such as Contacts and Calendars which you can share in iCloud, but this is less valuable for Photos Libraries unless you already share them in iCloud. This is because it is going to be much quicker to copy your Photos Library from disk to disk, then adjust its location in the app, than to wait for the whole library to sync down from iCloud.
The main folders which most users migrate by hand include that user’s Home Folder, /Applications and as much of /Library as they feel able. These are the most obvious and visible. Press ⌘⇧. (Command-Shift-.) in a Finder window, and you’ll see many additional folders which can also include key software components.
One particularly important hidden folder is /usr/local, which isn’t protected by SIP, and often contains command tools and other support for third party products. There isn’t any easy solution here, unless you can identify everything that you need to migrate in /usr/local. Be aware, though, that you may later need to return here to address deficiencies.
Most users concentrate their attention on their Home folder. The obvious and visible folders within it, such as Documents and those containing iTunes and Photos libraries are important, and will need to be reconnected to their apps later. Some of the biggest problems, though, lurk in ~/Library. Folders there like Application Support, Fonts, and Preferences are fairly straightforward, but will need careful weeding if you’re not to carry over lots of redundant old support files.
Containers and Group Containers are a nightmare, a maze of aliases linking to other folders within that Home folder. These appear to be lovingly recreated by Migration Assistant, but are fiendishly difficult to rebuild by hand. The result of not migrating them correctly is that individual apps may lose preference settings, plug-ins, and sometimes even more. There isn’t any easy solution apart from using Migration Assistant.
When copying your main Applications folder, don’t forget the Utilities folder within it. However, you’ll need to be mindful of the behaviour of different classes of app:
- Apple’s bundled apps which come in the macOS install are now protected by SIP, and can’t be copied. They will be updated as part of any macOS update for your new Mac.
- Apple’s free but unbundled apps, obtained from the App Store, have to be ‘bought’ for free again on the new Mac, where they will be updated as required.
- Other App Store apps, including Apple’s paid-for apps and Xcode, should be copied across during migration to save you having to install them again, but will need to be authorised using your AppleID when you first run them.
- Simple apps, installed by dragging and dropping into the Applications folder, should be copied across in the same way. Where they need to perform any further authorisation or installation, they should handle that.
- Apps which were installed using more complex installers, which could have installed important files in /Library as well as ~/Library. Although you may get away with just dragging the app across, you could have to run the installer to ensure that all its components are properly installed before it works fully again.
I will consider licensing issues in a later article.
The other important folder which you need to consider is the top-level Library folder. Although non-App Store apps and other software are most likely to have installed components in the Application Support and Preferences folders, they may also have put files in LaunchAgents and/or LaunchDaemons, PrivilegedHelperTools, Extensions, Fonts, and others. Specialist software may additionally have put components in other folders.
If you have a lot of complex apps which were installed using installers, migrating them by hand can be a slow and painstaking process.
In the next article in this series, I will look at the actions needed to follow up a successful migration, to ensure that apps work correctly, and to restart Time Machine backups.