Robocopy's default behavior is to only copy files that have changed (modified date or size).
This allows Robocopy to perform an incremental copy. This is useful when you need to copy a lot of data and that dataset is regularly changing. So you perform the initial copy, then at a later time repeat and only the data that couldn't be copied the first time (or data that has changed since) will be copied. This is very useful when moving data from one file server to another.
robocopy \\SERVER\D$\data D:\data /S /E /COPYALL /R:0 /W:0 /XD "\\SERVER\D$\data\Junk Folder" \\SERVER\D$\data\tmp
Copy from \\SERVER\D$\data to local D:\data
/S = Copy Subdirectories
/E =Include Empty Subdirectories
/COPYALL = Copy all file attributes
/R:0 = Retry zero times on copy failures
/W:0 = Wait 0 seconds between retries
/XD = Exclude Directories (Space separated list, make sure to properly quote paths that have spaces in them)
Be careful not to create a Junction Loop