Migrations copy the whole tree — symlinks and empty folders included
Two ways a server-to-server copy could silently leave holes in the destination, both closed.
If your source tree reached a directory through a symlink — /var/www → /srv/app, current → releases/2026-07, the usual shapes — the listing treated it as a file, failed it, and never copied anything beneath it. Links are now followed: a linked directory is walked, a linked file is copied at its real size, and a link pointing back into the tree is skipped rather than copying the same data twice.
Empty directories appeared in no file listing at all, so they simply weren't recreated. A server destination now gets the shape of the source tree, not just its files.
If you ran a server-to-server job before today, run it again — it will copy exactly what was missed and skip everything already in place.