Resume, Incremental and Differential
Three ways to re-run a migration, and what each one trusts
These three differ in what they take on trust. Resume trusts this run's own record of which batches finished. Incremental trusts a bookmark that says everything before it is already on the destination. Differential trusts nothing: it reads both sides and copies what is actually missing. That is why Differential is the slowest and the one to reach for when you are not certain.
What it does
- A run stopped part way. How do I finish it without copying the first half again?
- The migration finished days ago and people have kept working. How do I bring across just the new work?
- I am not sure the last few runs really copied everything. How do I find out and fix it in one pass?
- Someone renamed a folder in the source. Which of these will notice?
How it runs
- Resume - finish an interrupted run. Picks up the same run where it stopped. Batches already recorded as complete are skipped, and everything else, including items that failed, is attempted again. It reads the run's own saved state, so it is only offered on a run that did not finish. Fastest of the three, because it never re-examines what it already knows it did.
- Incremental - copy what changed since. Copies what the source reports as new or changed since the last migration of this scope. For Dropbox that is a cursor, explained under Limits below, which also catches moves and renames. Where there is no cursor it falls back to a modified-since date, which is weaker: a file that is moved or renamed usually keeps its original date, so a date-based pass will not see it. Use it to top up a migration that genuinely completed.
- Differential - copy what is missing. Reads the source, reads the destination, and compares them by path. Every list or library with at least one source item missing from the destination is copied again with the original run's options; inside it, items already on the destination are handled by the run's destination-compare setting. A list with nothing missing is left alone. It asks the destination rather than believing a record, so it finds files that an earlier run reported as copied but did not. This is the one that recovers from a bad run. It also costs the most: both sides are walked in full before anything is copied, and on a large library that walk alone can take a long time.
- Run compare - look without copying. The same read-and-compare as Differential, but it writes the differences to a workbook and copies nothing. Use it when you want to see the gap before deciding whether to close it.
How it works
A resume is recorded as a new run in Migration history, linked to the run it continues, with its own log and report. It replays the original request and reads what the earlier run recorded: content batches checkpointed as complete are skipped, and structure phases recorded as finished for the same destination web are not entered again. A resume always asks what to do about content already on the destination, and lists the job did not create are compared even if you answer not to compare. The run summary states what was skipped on the earlier run's word.
An Incremental SharePoint clone replays the original request as a new run, with the source read filtered to items modified at or after the moment the baseline run started. Subsites the baseline created are adopted rather than created again. Before an Incremental or a Differential starts, you are asked which site-level settings (navigation, site settings, theme) to re-sync as well; the ones you tick are applied again to the existing destination after the content.
A Differential SharePoint clone first compares source and destination, limited to the lists the baseline run copied (the whole site if the baseline was a whole-site copy). A list counts as out of step when at least one source item has no counterpart on the destination. If none is, the run says the destination already matches and copies nothing. Otherwise only the out-of-step lists are copied, merged into the existing destination, under the same rules about existing content as any copy into an existing site. Run compare does the same comparison, writes the result to a workbook, and changes nothing.
For Dropbox, Incremental uses the change cursor kept from the last clean run of that scope; if Dropbox says the cursor has expired, the run reads the whole scope instead and says so. A date-based pass keeps every folder whatever its date, so changed files always have somewhere to land. Differential for Dropbox copies the paths missing from the destination and leaves files already there alone.
What you need
- Resume appears only on a run that did not finish. A completed run has nothing to resume.
- Incremental needs a previous migration of the same scope to measure from.
- Differential needs to read the destination, so the destination sign-in must still be valid.
- All three re-use the source and destination the original run recorded. They cannot be pointed somewhere else; start a new migration for that.
What it will not do
- The cursor an Incremental uses is the SOURCE'S bookmark, not ours. Dropbox hands back a token meaning "you have now seen everything up to here"; give it back next time and it returns only what has changed since, moves, renames and deletions included. That is why a cursor beats a date. It is also a claim: it asserts that everything before it is already on the destination. ShareMaster only saves one after a run that completed AND copied something, because a run that copied nothing has proved nothing. Where no trustworthy cursor exists, Incremental falls back to the date and says so before it starts.
- None of them deletes. A file removed from the source stays on the destination, and none of these will tell you it is there. Run compare lists it as destination-only.
- Incremental is only as good as what it measures from. If the previous run did not copy everything, Incremental will not go back for the rest, because it believes the earlier ground is covered. Differential is the pass that does not make that assumption.
- Differential chooses what to copy by path only, never by size. A list where every source path is already on the destination is not copied again, so an edited file that is already there is missed. Incremental catches that case, because the source reports it as modified.
- A Differential on a large library spends most of its time reading before it copies anything. The run screen reports each page as it lands, so a long quiet stretch during the read is the scan working rather than a stall.
- Resume trusts the interrupted run's record of completed batches. If that run was reporting batches as complete when they were not, Resume inherits the same belief. Differential is the way to check.