Nodes/ComfyUI Ino Nodes/Ino S3 Sync Folder
ComfyUI Node

Ino S3 Sync Folder

Mirror a whole folder to S3 — or pull it back — like rsync for your bucket

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino S3 Sync Folder
    • success
    • message
    • rel_path
    • abs_path
    • downloaded
    • uploaded
    • skipped_unchanged
    • failed
    • removed_local
    • removed_remote
    • errors
    enabledtrue
    s3_key
    parent_folder
    foldersync/
    sync_localtrue
    s3_config{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}
    concurrency5
    deletefalse

    The other S3 nodes move single objects. Ino S3 Sync Folder moves everything - a whole local folder up to S3, or a whole bucket prefix down to disk, with concurrency, change detection, and a full accounting of what happened. It's the pack's answer to "I don't want to upload 200 images one by one." If you're backing up a run's outputs or restoring a job's inputs on a fresh cloud box, this is the node you want.

    It's part of ComfyUI Ino Nodes (nobandegani/ComfyUI-InoNodes), the 125+-node V3-schema pack, and the heaviest of its 16 S3 helpers. It's also an output node, so it runs even if nothing consumes its results - which is what you want for a "do the sync, then tell me about it" tool.

    How it works

    The key input is sync_local, which picks the direction. Despite the name, on means download (S3 → local), off means upload (local → S3) - the toggle label spells it out: "Download (S3->local)" / "Upload (local->S3)". Default is on (download).

    Other inputs:

    • enabled - the pack-wide toggle.
    • s3_key - the bucket prefix (folder) to sync with.
    • parent_folder / folder - the local side, via the standard input/output/temp dropdown plus subfolder (default sync/).
    • s3_config - optional; config string or env vars.
    • concurrency - how many transfers run in parallel (1–10, default 5). Higher is faster on many small files, but harder on the network.
    • delete - the dangerous one, and the tooltip is explicit: if on, orphan files on the destination side get removed, rsync-style. Defaults off. Only turn it on when you deliberately want one-way mirroring - it's the difference between "make them match" and "nuke whatever isn't in the source."

    Outputs: success, message, rel_path, abs_path, then a full scoreboard - downloaded, uploaded, skipped_unchanged, failed, removed_local, removed_remote, and errors (a string of what went wrong). The skipped-unchanged count is the nice touch: the sync detects files that already match and skips them, so re-running the same sync is cheap.

    When you'd use it

    Two patterns dominate: upload at the end (ship an entire output folder to S3 for archival or delivery) and download at the start (restore a job's inputs from the bucket onto a fresh machine - the classic cloud-GPU move). The change detection means you can re-run the sync as a safety net without re-transferring everything.

    Common issues

    • delete is a loaded word. Leave it off until you're sure. With it on, files on the destination that aren't in the source get deleted - there's no trash can in S3 or in your folder.
    • Direction confusion. sync_local on = download. Everyone reads this backwards once; the toggle label is your friend.
    • Counts as your source of truth. If failed is non-zero, don't assume the sync completed - check errors.

    Installing it

    ComfyUI Ino Nodes installs like any custom node pack:

    • ComfyUI Manager (easiest): search for "ComfyUI Ino Nodes", install, restart.
    • Manual:
      cd ComfyUI/custom_nodes
      git clone https://github.com/nobandegani/ComfyUI-InoNodes.git
      cd ComfyUI-InoNodes
      pip install -r requirements.txt
      Then restart ComfyUI.

    Requires inopyutils and a current ComfyUI. It's a niche pack with almost no Reddit footprint - the S3-with-ComfyUI pattern itself gets plenty of discussion, but this pack rarely shows up in it. For folder-sized transfers to object storage, though, it's the most complete tool in the pack.

    CategoryInoS3Helper

    Inputs (8)

    NameTypeDefaultDescription
    enabledBOOLEANtrue
    s3_keySTRING
    parent_folderCOMBO3 options: input, output, temp
    folderSTRINGsync/
    sync_localBOOLEANtrue
    s3_configoptSTRING{"access_key_id": "", "access_key_secret": "", "bucket_name": "", "endpoint_url": "", "region_name": ""}you can leave it empty and pass it with env vars
    concurrencyoptINT51–10
    deleteoptBOOLEANfalseIf True, delete orphan files on the destination side (rsync-style). Defaults to False — set to True only when you intentionally want one-way mirroring.

    Outputs (11)

    NameTypeDescription
    successBOOLEAN
    messageSTRING
    rel_pathSTRING
    abs_pathSTRING
    downloadedINT
    uploadedINT
    skipped_unchangedINT
    failedINT
    removed_localINT
    removed_remoteINT
    errorsSTRING