Migration Assistant cannot be trusted

So my rMBP arrived Thursday morning and I started a migration over LAN that night, before hitting the bed. It took 9 hours (i.e. until Friday morning) to drop to “1 minute remaining”. On the rMBP, Migration Assistant told me to plug in an ethernet cable to make the migration go faster. “But you don’t have a built-in ethernet jack anymore!” The irony.

And then it decided to hang at “1 minute remaining” for the remainder of yesterday. (WTF x 1)

So I said “fuck it” and aborted the migration. For the record Migration Assistant allows you to cleanly abort a migration, by pressing Cmd-Q. To see if I can speed up the migration, I removed the HDD from the old machine and put it in a USB 3.0 enclosure. I restarted a migration over USB. This time Migration Assistant tells me it will take about 2 hours. Much better.

And then the unthinkable happened:

At around the “37 minute remaining” mark, Migration Assistant stopped copying files and pretended it was done. (WTF x 2)

And it gave me a warning message to this effect: a user’s UID had to be reassigned from 502 to 501 and because the user also has a relocated home directory, I may need to manually correct the permissions after the migration. (WTF x 3)

Even a seasoned Mac user like myself find this warning message a little cryptic. “Thanks for not even telling me the username or relocated home directory path in question!” (WTF x 4)

I knew something was wrong, so I started digging into the newly migrated home directory…

“Where is my music? Where are my photos? Why am I missing random files and directories?” (WTF x 5)

And I’m not even talking about special files and directories that may have application-specific or machine-specific semantics – e.g. I can *somewhat* understand if you don’t completely mirror “~/Library” because that’s mostly profiles and settings, which can have application-specific semantics. And by “semantics” I really mean stupidities like the use of absolute paths where relative paths would be more appropriate. Instead, I’m just talking about ordinary files and folders: zip files, text files, etc.

At this point I said “fuck it” for a second time and just rsync’ed all the missing ordinary files and directories.