Media File Migrator (Creepybits)
Move your whole media library to a bigger drive
- status
The SSD is full. It's always the SSD. Media File Migrator is the digital moving truck for the moment you need to shift a whole library of generated images and videos from a crowded drive to a big archival one - without losing the folder structure you carefully built.
It's a move, not a copy: it scans source_folder, finds every image and video, recreates the relative folder tree on the destination drive inside a container folder named _Moved_media, and relocates the files. You point it at output and a D:\ drive, and your entire history ends up at D:\_Moved_media\<original subfolders>\ - organized exactly the way it was.
How it works
The node walks the source tree with os.walk, matching files against a built-in set of image and video extensions (png, jpg, jpeg, webp, gif, bmp, tiff plus mp4, mov, avi, mkv, webm, flv). For each match it records the file and its size. Then, critically, whether anything actually moves depends on the execute_move boolean:
execute_movefalse (default) - dry run. It walks the whole tree, counts files, totals their size in MB, and returns a report: "Found 340 media files, totaling 2,413.18 MB. Set 'execute_move' to True to proceed." Nothing touches disk.execute_movetrue - the real thing. It recreates the folder structure under_Moved_mediaandshutil.moves each file, printing a per-file progress line to the console.
The output is a status string with the summary either way. Three inputs total: source_folder, destination_drive, and the safety switch. That's it.
Why the dry run is non-negotiable
This is a move. Once execute_move is true and the run completes, the originals are gone from the source. The dry-run default exists precisely because a mistake here is a lost library, not an inconvenience. Run it once, read the file count and MB figure, sanity-check that the number matches what you expect in that folder, then flip the switch.
The node also guards against the dumbest version of that mistake: it refuses to run if the destination is inside the source folder (which would create a feedback loop), and it aborts if either path doesn't exist.
Installing it
Part of ComfyUI-Creepy_nodes:
- ComfyUI Manager: search "Creepy_nodes" and install.
- Manual:
cd ComfyUI/custom_nodes git clone https://github.com/Creepybits/ComfyUI-Creepy_nodes.git
Restart ComfyUI. Zero extra dependencies - pure os and shutil.
Troubleshooting
If the status says the destination drive doesn't exist, you've likely typed a drive letter that isn't mounted (or used lowercase when it matters). If a migration aborts partway with a per-file error in the console, it's usually a file lock - something has the file open (a viewer, another node). Fix the lock and re-run; already-moved files will simply be found no more. And if you want to copy rather than move - keeping the source intact - this node won't do that; copy the folder with your OS first, or accept the move.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| source_folder | STRING | C:\path\to\source | — |
| destination_drive | STRING | D:\ | — |
| execute_move | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |