I'm planning to copy roughly 196 GB from E: to G: using Robocopy. The destination currently has about 339 GB free. I put together this command and would appreciate a sanity check before running it:
robocopy E: G:FromE /E /Z /MT:8 /R:3 /W:5 /COPY:DAT /DCOPY:DAT /TEE /LOG:G:robocopy-copy.txt /XD "System Volume Information" "$RECYCLE.BIN" /XJ
My main questions are whether these switches are appropriate for a local drive-to-drive copy and whether anything could cause files to be skipped, deleted, or copied incorrectly. I'd also like to verify what the safest way is to preview the operation first.
4 Answers
Your command is broadly suitable for a straightforward copy. /E includes all subfolders, including empty ones; /MT:8 enables eight threads; /COPY:DAT preserves data, attributes, and timestamps; /DCOPY:DAT does the same for directory metadata; /TEE displays output while also logging it; /XD excludes the listed system folders; and /XJ avoids junction points. Since this is a copy rather than a mirror, it won’t delete files already present in G:FromE. Be cautious with /MIR in future commands, because mirroring can purge destination files that no longer exist at the source.
If this is a backup or profile migration, think carefully about metadata. /COPY:DAT does not copy NTFS permissions, ownership, or auditing information. If those matter, you would need appropriate security-related copy flags, but only use them when the destination filesystem and your permissions support them. For a normal personal file transfer, /COPY:DAT is usually the safer and simpler choice.
For two local drives, /Z usually isn’t necessary. It enables restartable mode and can reduce performance, so you can generally leave it out unless you specifically need a copy that can resume in a particular way. /R:3 and /W:5 are reasonable, though /R:1 /W:1 is faster if you don’t expect locked or temporarily unavailable files.
Add /L first to perform a dry run. It will list what Robocopy intends to copy without actually transferring or changing anything, which is the best way to verify the source, destination, exclusions, and file count before starting.

That makes sense. I’ll use /L to preview the results first and consider removing /Z for this local transfer.