See design doc for details. This ticket should cover both recipient primary and secondary behavior.
Store backup cursor results and set state to "learned filenames"
Keep backup cursor alive until file copy finishes
Call voteCommitMigrationProgress with step "copied files"
Set state to "copied files"
Abort shard merge if we copied extra files