Nodes/ComfyUI-Creepy_nodes/Media File Migrator (Creepybits)
ComfyUI Node

Media File Migrator (Creepybits)

Move your whole media library to a bigger drive

By Creepybits·Created about a year ago·Updated 2 months ago· 32
Media File Migrator (Creepybits)
    • status
    source_folderC:\path\to\source
    destination_driveD:\
    execute_movefalse

    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_move false (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_move true - the real thing. It recreates the folder structure under _Moved_media and shutil.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.

    CategoryCreepybits_Utils/FileIO

    Inputs (3)

    NameTypeDefaultDescription
    source_folderSTRINGC:\path\to\source
    destination_driveSTRINGD:\
    execute_moveBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    statusSTRING