Downloading and Uploading Folders
folder download, folder upload and folder thumbnail work on every asset of a
folder and its subfolders (--folder-path / is the whole tenant). They run four
items at a time by default, show progress bars in a terminal, and end with a
summary on stderr.
Without --continue-on-error the first failure stops the run: items that had not
started are counted as "Not attempted". With it, every item is tried and the run
still exits 69 when any failed. folder upload refuses files that already exist
in the destination before uploading anything (pass --skip-existing to skip them
instead). folder download downloads finished assets and assemblies waiting for
a missing part, and lists the assets it left out because they were still
processing or had failed.
On a tenant with an asset limit, folder upload and asset create-batch warn
before uploading when the files would bring the tenant to the point where the
web UI starts warning (85% of the limit on every tenant seen so far), or past
the limit. The warning never stops the upload. Most tenants have no limit and
are not checked.
Speed and Rate Limits
Optimize operations for large datasets:
# Concurrent downloads (faster for many files)
pcli2 folder download --folder-path "/Home/LargeFolder/" --concurrent 5 --progress
# Add delays to prevent rate limiting
pcli2 folder download --folder-path "/Home/Folder/" --delay 2
# Continue on errors
pcli2 folder download --folder-path "/Home/Folder/" --continue-on-error
# Continue past unresolvable asset paths in a metadata batch
pcli2 asset metadata create-batch --input "metadata.csv" --continue-on-error
# Download thumbnails for all assets in a folder
pcli2 folder thumbnail --folder-path "/Home/Folder/" --progress --concurrent 3
Resuming Interrupted Runs
Every long-running command can pick up where it stopped:
# Download: skip files that already exist in the destination
pcli2 folder download --folder-path "/Home/LargeFolder/" --resume --progress
# Upload: skip files whose name is already in the target folder
pcli2 folder upload --input ./parts --folder-path "/Home/Parts" --skip-existing
pcli2 asset create-batch --input "parts/*.stl" --folder-path "/Home/Parts" --skip-existing
# Folder match: record each completed search, re-run the same command to continue
pcli2 folder geometric-match --folder-path "/Home/Parts" --recursive \
--checkpoint parts-match.jsonl --format csv --headers > matches.csv
With --checkpoint FILE a folder match appends each asset's result to FILE the
moment its search finishes. If the run is interrupted, re-running the same
command with the same file reuses the recorded results and searches only the
assets that are left. The file is tied to the exact run (search type, tenant,
folders, threshold, --recursive, --exclusive, --limit); a file from a
different run is refused rather than mixed in. It is deleted once the report has
been written.
The Summary at the End
When using folder download and upload commands, you'll receive detailed statistics reports:
Download Statistics Report:
📊 Download Statistics Report
===========================
✅ Successfully downloaded: 125 assets
⏭️ Skipped (already existed): 75 assets
❌ Failed downloads: 2 assets
📁 Total assets processed: 202 assets
⏳ Operation completed successfully!
Upload Statistics Report:
📊 Upload Statistics Report
==========================
✅ Successfully uploaded: 150 assets
⏭️ Skipped (already existed): 0 assets
❌ Failed uploads: 1 asset
📁 Total assets processed: 151 assets
⏳ Operation completed successfully!