Skip to content

Instantly share code, notes, and snippets.

@bhubr
Last active January 8, 2021 20:51
Show Gist options
  • Save bhubr/43fe239beb9b7a1baf799b89ad57d0da to your computer and use it in GitHub Desktop.
Save bhubr/43fe239beb9b7a1baf799b89ad57d0da to your computer and use it in GitHub Desktop.
Backup a whole drive, excluding node_modules (Windows)

Backup a whole drive, excluding node_modules (Windows)

Just gimme the damn command!

robocopy D: E:\Backup_PC_202101\D /MIR /Z /LOG:C:\2021-01-07-backupD.log /XJ /XD node_modules /XD "*.tmp" /XD "broccoli_persistent_*" /XD "config_loader-*" /XD "npm-cache" /XD ".pnpm-store" .XD "Yarn\Cache" /XF "*.tmp"

Context

node_modules and other temporary files are hands down the biggest PITA ever, when it comes to performing backups. But Robocopy has your back 🎉.

Source: post on SO

Versions

v1: exclude just node_modules

This copies all the D: drive contents to E:\Backup_PC_202101\D:

robocopy D: E:\Backup_PC_202101\D /MIR /Z /LOG:C:\2021-01-07-backupD.log /XD node_modules

v2: exclude more stuff

  • Other PITAs: npm/yarn/pnpm caches,
  • Temp files from build systems (e.g. Broccoli, asset pipeline used by former Ember.js versions)
robocopy D: E:\Backup_PC_202101\D /MIR /Z /LOG:C:\2021-01-07-backupD.log /XD node_modules /XD "*.tmp" /XD "broccoli_persistent_*" /XD "config_loader-*" /XD "npm-cache" /XD ".pnpm-store" .XD "Yarn\Cache" /XF "*.tmp"

v3: ignore junctions

While backing up my C:\Users\Username folder, I encountered this weirdest of all error... As you can see, that's some pretty recursive shit!

2021/01/08 20:09:38 ERROR 1921 (0x00000781) Time-Stamping Destination Directory E:\Backup_PC_202101\C_Users_Ben\AppData\Local\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\
The name of the file cannot be resolved by the system.

Googling time-stamping destination directory robocopy application data led me there: batch file, robocopy problem: ERROR 1921 (0x00000781)

Quoting it:

The Recursion you are seeing is caused by the Application Data folder, which is actually a Junction.

This can happen when your Robocopy batch file encounters a Junction or Symbolic Link in the Users folder.

You can easily fix this problem by including the /xj switch in the command.

Here is the documentation:

/xj Excludes junction points, which are normally included by default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment